[MySQL] - Requete
Résolu
bacchuss
Messages postés
1165
Statut
Membre
-
crabs Messages postés 909 Statut Membre -
crabs Messages postés 909 Statut Membre -
Bonjour
voila mon probleme SQL (MySQL):
j'ai 2 tables (j'ai fait tres court, y a plein d'autres tables et champs)
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
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
-
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 -
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 -
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
:( -
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