Page 1 sur 1

Clause ON pour les jointures à gauche

Posté : 27 oct. 2011, 21:03
par gladii
Bonjours, j'aimerai savoir pourquoi pour faire la condition de jointure dans une jointure à gauche il faux utiliser
la clause ON et pas la clause WHERE et je poste aussi parce que j'aimerai quelleque éxplication sur la clause ON
car quand je tape sur google clause ON mysql je ne trouve rien :shock:

merci à vous !!

Re: Clause ON pour les jointures à gauche

Posté : 27 oct. 2011, 21:31
par Ryle
En fait cela dépend de ton type de jointure interne (inner) ou externe (outer).

Dans le premier cas, tu ne vas récupérer que les enregistrements qui ont un résultat dans chacune des tables liées. Dans ce cas là, tu peux effectivement utiliser la clause where aussi bien que la syntaxe join.

Dans le second, tu récupéreras les enregistrements de ta table principale même s'il n'y a pas de correspondance dans les tables liées. Dans ce cas, il te faut obligatoirement utiliser la syntaxe join.

Quoi qu'il en soit, la syntaxe join te permet également d'avoir une construction et une lecture simplifiée de tes requêtes. En effet, dans la construction de ta requête cela te permet de regrouper la liste des tables et les conditions qui les lient d'une part (join), et d'autre part avoir tout les prédicats qui vont réellement filtrer les résultats (where) :

Code : Tout sélectionner

SELECT ... FROM ... LEFT INNER JOIN .... ON .... LEFT INNER JOIN .... ON .... WHERE ..... AND .... ORDER BY ...

Re: Clause ON pour les jointures à gauche

Posté : 27 oct. 2011, 21:52
par gladii
Don si je comprend bien la clause ON qui s'utilise uniquement avec la syntaxe JOIN existe seulement pour séparer visuelement les conditions qui lient les tables et les filtres utilisé avec la clause where comme not null etc
Mais dans la logique on pourrait utiliser uniquement une clause where pour éfféctuer les conditions et les filtres
Donc la clause ON aide seulement simplement à avoir une construction et une lecture simplifiée ?

merci beaucoups !!

Re: Clause ON pour les jointures à gauche

Posté : 27 oct. 2011, 22:03
par gladii
Dans une condition qui utilise la clause ON pour les liaisons entre les tables donc, peut-on utiliser d'autre opérateur que l'opérateur de comparaison = ?

Sinon voici mes note sur la clause ON :D

La clause ON s'utilise avec les opérateurs de comparaison ....(et les opérateur logique ?).
Elle s'utilise uniquement avec la syntaxe LEFT JOIN, RIGHT JOIN, INNER JOIN, CROSS JOIN.
La clause ON s'utilise pour faire une condition uniquement sur les liaisons entre les tables.
Pour faire un filtrage plus précis on utilise la clause WHERE.
Elle s'utilise avec les instructions SQL suivante : SELECT ...

Sont-elle éxacte merci!!!

Re: Clause ON pour les jointures à gauche

Posté : 27 oct. 2011, 22:41
par moogli
salut,

le mieux c'est un cours sur le sujet http://sqlpro.developpez.com/cours/sqlaz/jointures/ qui va t'expliquer ce qu'est une jointure et les différentes jointure qui existe.

cela est intéressant car dans le de clef étrangère "normées" (j'entends par la que la clef ai le même nom dans les deux tables) tu peu simplement utiliser le mot clef using pour indiquer sur quoiporte la jointure.
par exemple : select truc, machin from table1 join table2 using (clefdetable);

enfin bref bonne lecture :)


@+