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

Répondre
Amery
Amery
Déconnecté
Bonjour,

j'essaie de refaire toutes mes jointures de tables en utilisant JOIN ON: jusqu'à maintenant j'utilise :

  1.  
  2. SELECT * FROM table1,table2 WHERE table1.champs=table2.champs
  3.  


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
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
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 ^^.
Amery
Amery
Déconnecté
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
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
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 ^^
Amery
Amery
Déconnecté
Ok, encore merci.

Je vais potasser tout ça...
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Le INNER JOIN est équivalent à la jointure de ton premier message, dans le WHERE.
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog