Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2416 connectés 

  FORUM HardWare.fr
  Programmation

  Vieille requete SQL a la con qui marche pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vieille requete SQL a la con qui marche pas

n°65969
Sebastien
Posté le 18-10-2001 à 10:02:11  profilanswer
 

delete from users  
where id=
 (Select id from users_stats where level = 0)
 
Marche pas...
Les noms sont bon et je pensais que la typographie aussi mais ca a pas l'air d'etre le cas

mood
Publicité
Posté le 18-10-2001 à 10:02:11  profilanswer
 

n°65975
gizmo
Posté le 18-10-2001 à 10:12:33  profilanswer
 

essaye ca:
 
delete from users  
where users.id=
 (Select users_stats.id from users_stats where level = 0)

n°65977
iskream
Posté le 18-10-2001 à 10:13:14  profilanswer
 

Salut,
 
Si la deuxieme partie de ta requete "Select id from users_stats where level = 0" ramène plusieurs enregistrement, celà ne risque pas de marcher.
Dans ce cas, ta requête doit devenir :
 
delete from users  
where id IN
(Select id from users_stats where level = 0)

n°65979
jupiler
Un cousin...
Posté le 18-10-2001 à 10:15:54  profilanswer
 

iskream a écrit a écrit :

Salut,
 
Si la deuxieme partie de ta requete "Select id from users_stats where level = 0" ramène plusieurs enregistrement, celà ne risque pas de marcher.
Dans ce cas, ta requête doit devenir :
 
delete from users  
where id IN
(Select id from users_stats where level = 0)  




 
 
 :jap:  
pas mieux


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°65981
Sebastien
Posté le 18-10-2001 à 10:18:38  profilanswer
 

En fait je crois que c mysql qui n accepte pas les requetes imbriqués, j suis pas dans la merde la...

n°65983
gizmo
Posté le 18-10-2001 à 10:19:19  profilanswer
 

Sebastien a écrit a écrit :

En fait je crois que c mysql qui n accepte pas les requetes imbriqués, j suis pas dans la merde la...  




 
si, mysql les acceptent sans problème.

n°65984
Sebastien
Posté le 18-10-2001 à 10:21:19  profilanswer
 

Ben c pas ce qui est dit sur le forum de phpfrance ou un truc comme ca..
Car la derniere partie de la requete toute seule fonctionne correctement...
Les deletes sur des conditions de la meme table aussi...

n°65985
iskream
Posté le 18-10-2001 à 10:21:35  profilanswer
 

Sebastien a écrit a écrit :

En fait je crois que c mysql qui n accepte pas les requetes imbriqués, j suis pas dans la merde la...  




 
MySQL est certes limité, mais pas à ce point là...il respecte quand meme les standards SQL :)

n°65986
IPZorj
Posté le 18-10-2001 à 10:22:33  profilanswer
 

iskream a raison dans le principe mais voila une meilleure facon décrire la requete (d'un point de vue optimisation) :
 
DELETE FROM USERS A    
WHERE EXISTS ( SELECT 'X' FROM USERS_STATS B WHERE B.ID = A.ID AND B.LEVEL = 0 );

n°65988
iskream
Posté le 18-10-2001 à 10:24:25  profilanswer
 

ipzorj a écrit a écrit :

iskream a raison dans le principe mais voila une meilleure facon décrire la requete (d'un point de vue optimisation) :
 
DELETE FROM USERS A    
WHERE EXISTS ( SELECT 'X' FROM USERS_STATS B WHERE B.ID = A.ID AND B.LEVEL = 0 );  




 
En effet, la clause IN a pour effet de plomber quelques peu les performances quand le volume commence à être conséquent.

mood
Publicité
Posté le 18-10-2001 à 10:24:25  profilanswer
 

n°65991
Sebastien
Posté le 18-10-2001 à 10:33:19  profilanswer
 

Ca ca fonctionne
 SELECT A.ID
 FROM USERS_STATS AS B, USERS AS A  
WHERE B.UID = A.UID  
 
mais ca non :
SELECT ID
FROM USERS
where id exists (select id from users_stats)
ni
SELECT ID
FROM USERS
where id in (select id from users_stats)

n°65992
Sebastien
Posté le 18-10-2001 à 10:38:02  profilanswer
 

Vu a different endroit :
 
saches que sous MySQL est assez limité en fait  mais tu ne peux pas faire de REQUETES imbriquées par exemple...ce qui s'avère très embetant car tu dois le 'simuler' apres avec un tit traitement en php
 
et dans tous les cas MySQL ne fait pas de requetes imbriquées.
 
Pas évident avec mySQL parce qu'il n'accepte pas les sous requêtes

n°65993
saxgard
Posté le 18-10-2001 à 10:43:21  profilanswer
 

et avec une jointure ca marcherai pas?
 
a mon avis si c possible faut eviter les requettes imbriqué , je pense que ca peu devenir vite lourd surtt ds l'écriture.
 
delete from users U, users_stats S  
where U.id= S.Id And S.level=0
 
mais bon je me trompe peut etre :D  
 
@++

 

[edtdd]--Message édité par saxgard--[/edtdd]

n°65994
omega2
Posté le 18-10-2001 à 10:44:42  profilanswer
 

Moi aussi, j'ai été bloqué pour certaines requêtes à cause de MySQl et par expérience, je peux le dire, MySQL ne suporte pas les requêtes imbriquées.

n°65996
omega2
Posté le 18-10-2001 à 10:47:09  profilanswer
 

saxgard a écrit a écrit :

et avec une jointure ca marcherai pas?
 
a mon avis si c possible faut eviter les requettes imbriqué , je pense que ca peu devenir vite lourd surtt ds l'écriture.
 
delete from users U, users_stats S  
where U.id= S.Id And S.level=0
 
mais bon je me trompe peut etre :D  
 
@++  
 
 




Une jointure, ca marche très bien si tu fait un select sur les deux tables.
 
Par contre, je vois pas comment on peut faire une jointure entre un select et un delete. :??:

n°65997
Sebastien
Posté le 18-10-2001 à 10:48:08  profilanswer
 

Ben j'y avais aussi pense mais je crois pas que tu puisses faire de jointure dans un delete, car la il va se baser sur 2 tables, c pas tres bon, voir ca risque d'etre chaud.
 
Il va me virer et dans user_stat et dans user la, quoique a la fin c bien ce que j'aurais voulu faire

n°65998
saxgard
Posté le 18-10-2001 à 10:48:32  profilanswer
 

arf j'avais pas vu que ca avais déja étais dis les jointures , mais alors la je voix plus ou est le pb ;)
 
Sebastien si ca marche opurquoi tu ne fais pas comme ca alors?

n°65999
saxgard
Posté le 18-10-2001 à 10:49:19  profilanswer
 

ah oauis pasbete , alors ta question est pertinente ;)
passe sous access alors  :lol:
 
bin alors personnellement ca m'étonne que mysql n'accepte pas les requetes imbriqués parceque des fois elles sont innévitable

 

[edtdd]--Message édité par saxgard--[/edtdd]

n°66000
Sebastien
Posté le 18-10-2001 à 10:50:38  profilanswer
 

Car a la base c pas un select que je veux faire mais un delete.
 
Je prenais le cas du select, car c plus connu plus comprehensible, et ceux qui connaissent le sql, savent ce que retourne un select. C le plus connu et plus simple.

n°66002
saxgard
Posté le 18-10-2001 à 10:54:58  profilanswer
 

bon sinonj'ai une solution batard ;)
 
tu fais ta requete sur users_stats
et ensuite tu boucle et tu delete chaque élément dans users  
 
je sais c pas tres jolie mais ca marche ;)

 

[edtdd]--Message édité par saxgard--[/edtdd]

n°66003
Sebastien
Posté le 18-10-2001 à 10:58:30  profilanswer
 

Sachant que j ai 1674 users...

n°66004
saxgard
Posté le 18-10-2001 à 11:00:04  profilanswer
 

ui mais ta pas 1674 users avec un level=0 non?
 
mais bon comme je t'ai dis c une solution batarde mais qui a le mérite de marcher, au moin tu n'est pas bloqué au cas ou  :D
 
cela dis 1674 c'est pas énorme je pense  ;)  
 
bonne chance @+

n°66009
Sebastien
Posté le 18-10-2001 à 11:14:28  profilanswer
 

faire 1400 delete a la main, merci mais non merci, je vais etre oblige de faire un petit prog php, c pas trop grave, mais bon quand je vois le ansi sql le fait directos..

n°66010
saxgard
Posté le 18-10-2001 à 11:19:50  profilanswer
 

a la main a j'ai du raté une étape ;)
 
je pensé que c'étais en php ou un truc ds le genre

n°66012
omega2
Posté le 18-10-2001 à 11:37:52  profilanswer
 

Sebastien a écrit a écrit :

faire 1400 delete a la main, merci mais non merci, je vais etre oblige de faire un petit prog php, c pas trop grave, mais bon quand je vois le ansi sql le fait directos..  




C'est exactement ce que saxgard  
 
 voulais te dire de faire, un script php pour tout effacé.

n°66021
Sebastien
Posté le 18-10-2001 à 12:11:10  profilanswer
 

Ouais ben voila c fait, je disais que ca me fait mal de faire ca alors que le ansi sql le fais directement sans prog ni rien.

n°66032
saxgard
Posté le 18-10-2001 à 12:40:42  profilanswer
 

ui je comprends bien mais des fois faut s'adapter avec l'outil qu'on a meme sic pas la meilleur solution , cependnat je pense aps qu'ele sois si horrible , mais la je pourrais pas dire
 
en tt cas je vais essayer de voir si je connaitrai pas une autre solution , bonne chance @+

n°66090
Sebastien
Posté le 18-10-2001 à 14:27:59  profilanswer
 

Na c bon te casse pas la tete je l'ai ecrite la fonction, c clair c rien du tout, mais bon c dommage.

n°66091
saxgard
Posté le 18-10-2001 à 14:28:48  profilanswer
 

oki ;)

n°66117
Georges Mo​ustaki
Posté le 18-10-2001 à 15:22:47  profilanswer
 

vive oracle :)

n°66146
Sebastien
Posté le 18-10-2001 à 16:21:26  profilanswer
 

O oui mais bon c pas non plus les meme prix, et pas sur que ma boite accepte la difference, de plus ici nos bd oracle sont ctiques j suis pas sur qu'ils accepteront que j'y touche et comme j suis pas admin bdd/vms je prefere pas

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Vieille requete SQL a la con qui marche pas

 

Sujets relatifs
j'ai besoin de 2 fichier de Sql Server 2000 , vite mes bases sont HSprobleme avec SQL Server 2000 et SP1
style qui marche sous IE et pas sous netscape...[PHP] Comment ça marche les sessions?
[SQL] Tableaux.Pouvois executer une requete oracle sql sous environnement win
sysdate et SQL****URGENT***** - Question en SQL
SQL ORACLE et EXCEL = > Chaud les marronsDELPHI requête SQL
Plus de sujets relatifs à : Vieille requete SQL a la con qui marche pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR