Jointure de table: différence entre LEFT JOIN et RIGHT JOIN

Répondre
Amery
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?
zebden
le 03/08/2007 à 12:09
zebden
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
Amery
le 03/08/2007 à 12:48
Amery
Ok, merci zebden pour ces explications.

Sinon, tu as INNER JOIN.


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
zebden
le 03/08/2007 à 13:01
zebden
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
LA GLOBULE
le 03/08/2007 à 14:05
LA GLOBULE
Le INNER JOIN est équivalent à la jointure de ton premier message, dans le WHERE.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours