Jointure de table: différence entre LEFT JOIN et RIGHT JOIN
le 03/08/2007 à 11:20
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?
le 03/08/2007 à 12:09
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 ^^.
le 03/08/2007 à 12:48
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
le 03/08/2007 à 13:01
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 ^^
le 03/08/2007 à 13:50
Ok, encore merci.
Je vais potasser tout ça...
le 03/08/2007 à 14:05
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.
le 03/08/2007 à 14:06
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Accès rapide :
PHP / MySQL
HTML / CSS
Javascript
Autres technologies
Le site
Les 3H du PHP
Le bar
Script / Production personnelle
Remonter