Jointure de table: différence entre LEFT JOIN et RIGHT JOIN
le 03/08/2007 à 11:20
Amery
Bonjour,
j'essaie de refaire toutes mes jointures de tables en utilisant JOIN ON: jusqu'à maintenant j'utilise :
SELECT * FROM table1,table2 WHERE table1.champs=table2.champs
A ce qui paraît, cette méthode est obsolète...
Mais je ne comprends pas la différence entre LEFT JOIN et RIGHT JOIN?
Est-ce que quelqu'un sait?
Bien sur
si tu traduis :
LEFT JOIN : je joins sur la gauche
RIGHT JOIN : je joins sur la droite
Ce qui veut dire en gros que la jointure, comme bcp de choses suit un ordre précis
De gauche à droite
pour essayer d'être assez clair :
Imaginons que tu aies 3 tables à joindre
La table principale => table 1 et table 2
Que grâce à table 1 (et seulement cette table) tu peux joindre les infos de table 2.
Si tu essaies de joindre en premier table 2 dans ta requête, eh bien cela ne fonctionnera pas. Donc en la mettant sur la gauche.
SELECT * FROM `table_principal`
LEFT JOIN `table1` ON (instruction)
LEFT JOIN `table2` ON (instruction)
=> OK
=> Ordre de gauche à droite : table_principal, table1, table2
SELECT * FROM `table_principal`
LEFT JOIN `table2` ON (instruction)
LEFT JOIN `table1` ON (instruction)
=> Marchera pas
=> Odre de gauche à droite : table_principal, table2, table1
SELECT * FROM `table_principal`
RIGHT JOIN `table2` ON (instruction)
LEFT JOIN `table1` ON (instruction)
=> OK
=> Ordre de gauche à droite : table_principal, table1, table2
Sinon, tu as INNER JOIN.
Bon courage ^^.
zebdinou pour les intimes / Blog : http://www.zebden.fr
le 03/08/2007 à 12:48
Amery
Ok, merci zebden pour ces explications.
A quoi ça sert? Je crois avoir vu un STRAIGHT JOIN, aussi...
Autre question: pourquoi passer par la méthode JOIN ON et plus par la mèthode plus simple (à mon goût) de "WHERE table1.champs=table2.champs" ?
Amery
Je t'ai donné la base après faut voir la doc. C'est marqué clairement.
Pour la clause WHERE, non, c'est plus simple et plus propre de mettre la condition dans le ON associé à la table que l'on joint. Et ainsi utilisé la clause WHERE de façon normale sans y inclure les jointure.
Pour deux tables, ça va mais tu verras que si tu as 4 ou 5 tables à joindre, c'est déjà plus complexe ^^
zebdinou pour les intimes / Blog : http://www.zebden.fr
le 03/08/2007 à 13:50
Amery
Ok, encore merci.
Je vais potasser tout ça...
Le INNER JOIN est équivalent à la jointure de ton premier message, dans le WHERE.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: