[MySQL] problème de left join (fusion de suppression)

problème de left join (fusion de suppression) [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 21-04-2005 à 18:43:07    

bonjour à tous  :bounce:  
 
Voila mon problème, dans un tableau j'ai des entrées sous un ID=0 et des entrés sous un ID=1.
 
Je veux trouver les lignes du tableau avec un ID=0 qu'on ne retrouve pas quand ID=1.
 
Je me sers donc de la commande left join, de cette maniere :

Code :
  1. select t1.ID_table,t2.ID_table from resultats_recherche as t1 left join resultats_recherche as t2 using (table_res,ID_table) where t1.decompo_id=0 and t2.decompo_id=1;


 
et la, je comprends pas, cette commande ne me renvoit auncun résultat de type NULL (ce qui est l'essence meme de l'utilisation du left join  :D ).
Pire que ca, cette commande me renvoie toutes les lignes qui correspondent entre ID=0 et ID=1.
Bien entendu, il y a des différences entre les lignes du tableau de ID=0 et de ID=1, j'ai bien vérifié pour etre sur.
 
En fait, elle me renvoie exactement le meme résultat que cette commande :
 

Code :
  1. select t1.ID_table,t2.ID_table from resultats_recherche as t1, resultats_recherche as t2  where t1.decompo_id=0 and t2.decompo_id=1 and t1.table_res=t2.table_res and t1.ID_table=t2.ID_table;


 
Comme vous le voyez, c'est la commande exactement inverse, mais qui renvoie le meme résultat  :D  
 
Quelqu'un saurait m'aider sur l'utilisation du left join svp? :)


Message édité par Djebel1 le 21-04-2005 à 18:45:20
Reply

Marsh Posté le 21-04-2005 à 18:43:07   

Reply

Marsh Posté le 22-04-2005 à 10:59:10    

up :)

Reply

Marsh Posté le 22-04-2005 à 13:54:14    

j'ai pas fait une erreur de syntaxe ou une erreur bete dans le genre d'après ce que vous voyez?

Reply

Marsh Posté le 24-04-2005 à 18:27:21    

salut, je connais pas bien la syntaxe que tu utilises mais pour avoir les enregistrements de la table t1 qui ne se trouvent pas dans t2 quand t2.id_table=1 je ferai :

Code :
  1. select t1.id_table from table1 t1 left join table2 t2 on t1.id_table = t2.id_table and t2.id_table = 1 where t2.id_table is null and t1.id_table = 0


autrement dit dans t2 tu ne prend que les lignes qui ont t1.id_table = t2.id_table et t2.id_table = 1 et pour ceux là tu prends que ceux qui sont dans t1 (ils n'existe pas dans t2 => is null) et qui vallent t1.id_table = 0 dans t1
 
je sais pas si c'est clair et si c'est ce qu'il te faut mais j'aurai essayé  :)  

Reply

Marsh Posté le 25-04-2005 à 16:04:23    

Dans ta requete avec le left join deja tu ne dois pas avoir besoin du using, mais ca ne doit pas faire de mal, mais surtout utilise une condition 'on' pour specifier la clef de jointure entre les deux tables.
Je ne sais pas si ton probleme vient de la, mais ca n'en sera que plus juste :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed