[MySQL] - Requete

Résolu
Bonjour

voila mon probleme SQL (MySQL):

j'ai 2 tables (j'ai fait tres court, y a plein d'autres tables et champs)
       machin           truc
+-----+-----+-----+  +---+-----+
|  A  |  B  |  c  |  | D |  E  |
+-----+-----+-----+  +---+-----+
|toto |  1  |  2  |  | 1 | 4.3 |
|titi |  1  |NULL |  | 2 | 5.1 |
|     |     |     |  |   |     |


resultat desire:
+-----+-----+-----+  
|toto | 4.3 | 5.1 |  
+-----+-----+-----+  
|titi | 4.3 |     | 
+-----+-----+-----+ 


SELECT A, t1.E, t2.E
FROM machin, truc t1, truc t2
WHERE machin.B = t1.D
AND machin.C = t2.D

pour toto, je sais bien faire.
Par contre, pour titi, je me prends la tete

Quelqu'un sait ?

Merci
--
__________________________________________
01001001110101001010100101 et plus si affinités

4 réponses

  1. Salut,
    Etonnant, sur mon serveur ça fonctionne - les clauses de restriction.
    Par contre je n'ai pas de clé de définie ni sur la table machin et sur truc et les
    tables sont MyISAM (rappel version: 4.0.23a).
    A+, crabs
    1. bon apparemment ca marche.
      Par contre, si je veux pousser un peu plus loin, c'est a dire mettre un filtre sur mon resultat, il ne le prend pas en compte

      select A,t1.E,t2.E from machin
          left join truc as t1 on B=t1.D
          left join truc as t2 on C=t2.D
      where A = "titi"
      


      Je pensais que ca ne me retournerai qu'une ligne (celle avec titi), et bien non ... il me retourne toutes les lignes

      :(
      1. arf, j'essayais en mettant des + comme en oracle moi

        merci je vais essayer ca.
        Par contre mes tables ne sont pas grosses (1000 lignes env) donc ca devrait passer pour mon serveur
        1. Salut,
          les jointures ignorent les NULL. Il faut regarder du coté de LEFT JOIN.
          select A,t1.E,t2.E from machin
              left join truc as t1 on B=t1.D
              left join truc as t2 on C=t2.D
          

          (Valider avec la version 4.0.23a de mysql)
          Je sais pas si on peut imbriquer les 'left join à l'infini. Par contre ça va mettre
          à genou ton serveur mysql si les tables machin et truc sont conséquentes.
          Faut bien penser à mettre 'D' comme clé primaire unique de 'truc' ou comme
          index.
          A+, crabs