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

 


Dernière réponse
Sujet : Vieille requete SQL a la con qui marche pas
Sebastien 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Sebastien 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
Georges Moustaki vive oracle :)
saxgard oki ;)
Sebastien Na c bon te casse pas la tete je l'ai ecrite la fonction, c clair c rien du tout, mais bon c dommage.
saxgard 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 @+
Sebastien 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.
omega2

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é.

saxgard a la main a j'ai du raté une étape ;)
 
je pensé que c'étais en php ou un truc ds le genre
Sebastien 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..
saxgard 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 @+
Sebastien Sachant que j ai 1674 users...
saxgard 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]

Sebastien 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.
saxgard 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]

saxgard 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?
Sebastien 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
omega2

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. :??:

omega2 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.
saxgard 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]

Sebastien 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
Sebastien 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)
iskream

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.

IPZorj 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 );
iskream

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 :)

Sebastien 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...
gizmo

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.

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

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

iskream 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)
gizmo essaye ca:
 
delete from users  
where users.id=
 (Select users_stats.id from users_stats where level = 0)
Sebastien 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

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)