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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [mysql] NOT EXISTS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[mysql] NOT EXISTS

n°1576812
theredled
● REC
Posté le 19-06-2007 à 15:11:24  profilanswer
 

hello

 

j'ai deux tables de type :


---- table parents -----
--> id
--> nom

 

---- table enfants -----
--> id
--> id parent
--> nom

 

Je voudrais sélectionner tous les parents ayant au moins un enfant.
Je comptais faire avec EXISTS :

Code :
  1. SELECT * FROM parents WHERE
  2. EXISTS (SELECT * FROM enfants WHERE id_parent = parents.id)
 

Mais ça me retourne rien alors que ça devrait :/ Pourquoi donc ? Que faire ?


Message édité par theredled le 19-06-2007 à 15:13:50

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le 19-06-2007 à 15:11:24  profilanswer
 

n°1576836
flo850
moi je
Posté le 19-06-2007 à 15:47:08  profilanswer
 

je ne sais pas pourquoi c ane te retourne rien , mais dans ce cas, je n'utiliserai pas un exists
 
plutot quelque chose comme ca  

Code :
  1. SELECT parents.* FROM parents, enfants WHERE parents.id = enfants.id_parent


 
( eventuellement un SELECT DISTINCT  si tu ne veux les parents qu'une fois )
 

n°1576840
theredled
● REC
Posté le 19-06-2007 à 15:49:08  profilanswer
 

flo850 a écrit :

je ne sais pas pourquoi c ane te retourne rien , mais dans ce cas, je n'utiliserai pas un exists
 
plutot quelque chose comme ca  

Code :
  1. SELECT parents.* FROM parents, enfants WHERE parents.id = enfants.id_parent


 
( eventuellement un SELECT DISTINCT  si tu ne veux les parents qu'une fois )


Le truc c'est qu'en vrai je veux faire un DELETE (supprimer tous les parents n'ayant pas d'enfants). Du coup je sais pas si ta soluce est appliquable ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1576970
ShadowKnig​ht
Hello Darkness my old friend..
Posté le 19-06-2007 à 18:19:17  profilanswer
 

theredled a écrit :

Le truc c'est qu'en vrai je veux faire un DELETE (supprimer tous les parents n'ayant pas d'enfants). Du coup je sais pas si ta soluce est appliquable ?

 

et avec un truc genre

 

DELETE FROM parents WHERE a.id parent NOT IN (SELECT a.id parent FROM parents a, enfants b WHERE a.id parent = b.id parent)

 

ça pourrait pas le faire :??:

Message cité 1 fois
Message édité par ShadowKnight le 19-06-2007 à 18:20:45

---------------
"Parfois, il faut savoir accepter qu'il ne se passe rien..."
n°1576972
theredled
● REC
Posté le 19-06-2007 à 18:20:36  profilanswer
 

stune solution :o
mais j'aimerais bien faire marcher mon NOT EXISTS :/


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1576975
ShadowKnig​ht
Hello Darkness my old friend..
Posté le 19-06-2007 à 18:24:39  profilanswer
 

ben ya pas grand chose à changer si t'y tiens absolument :

 

DELETE FROM parents WHERE a.id parent NOT EXISTS (SELECT a.id parent FROM parents a, enfants b WHERE a.id parent = b.id parent)

  


:o

Message cité 1 fois
Message édité par ShadowKnight le 19-06-2007 à 18:24:49

---------------
"Parfois, il faut savoir accepter qu'il ne se passe rien..."
n°1577020
theredled
● REC
Posté le 19-06-2007 à 22:36:17  profilanswer
 

ShadowKnight a écrit :

ben ya pas grand chose à changer si t'y tiens absolument :

 

DELETE FROM parents WHERE a.id parent NOT EXISTS (SELECT a.id parent FROM parents a, enfants b WHERE a.id parent = b.id parent)

 

:o


je pense pas que ça marche ça :D

Message cité 1 fois
Message édité par theredled le 19-06-2007 à 22:36:25

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1577079
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 09:26:13  profilanswer
 

theredled a écrit :

je pense pas que ça marche ça :D


+1
Ta 1ere requête me parait correcte, j'aurais juste tendance à éviter le * dans le sous select.
Tu aurais un jeu de test "qui ne marche pas".
 
Par ailleurs, si tu peux evite le NOT IN qui est catastrophique sur les perfs.
 
 
 

n°1577099
theredled
● REC
Posté le 20-06-2007 à 10:06:42  profilanswer
 

Oh my god [:ddr555]
C'est mon test qui était foireux [:fing fang fung] (donc la requete était très bien)
Merci le matin :D


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1577165
MagicBuzz
Posté le 20-06-2007 à 11:41:48  profilanswer
 

Liste des parents sans enfant :
 

Code :
  1. SELECT p.id
  2. FROM parents p
  3. LEFT OUTER JOIN enfants e ON e.parent_id = p.id
  4. WHERE e.id IS NULL

mood
Publicité
Posté le 20-06-2007 à 11:41:48  profilanswer
 

n°1577167
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 11:42:36  profilanswer
 

ça revient exactement à faire un not exists :o

n°1577240
MagicBuzz
Posté le 20-06-2007 à 12:24:10  profilanswer
 

Ouais sauf qu'il n'y a pas de not exist :o


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

  [mysql] NOT EXISTS

 

Sujets relatifs
Génération de fichier xml à partir de php mysql. [Résolu][MySQL] Procédure stockée : parcourir les résultats d'un SELECT ?
[Resolu] [php/mySQL JS?] Case a cocher evenementielle.?? Requette sql pour connaitre le nombre d'entrée dans une table mysql
[C#] Problème requête MySqlAuto execution de requette avec mysql
[mysql] Requete possible ?Not IN Not Exists sous MySQL?
Pb requete MYSQL avec NOT EXISTSMysql , problème avec NOT IN et NOT EXISTS
Plus de sujets relatifs à : [mysql] NOT EXISTS


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