Est-il possible d'écrire une requête de jointure sans ON
instruction? et comment fonctionnent ces jointures LEFT JOIN, RIGHT JOIN
.
mysql
join
left-join
inner-join
right-join
Alexander T.
la source
la source
ON
clause indique au serveur comment les tables sont liées, non. Si vos différents types de jointures donnent tous le même résultat, vous le faites mal d'une manière ou d'une autre, et l'ajout de code pourrait nous aider à détecter votre problème. En attendant, rendez-vous sur le blog de Jeff Atwood pour une introduction de 2 minutes aux différents types de jointures.Réponses:
La documentation MySQL couvre ce sujet.
Voici un synopsis. Lorsque vous utilisez
join
ouinner join
, laon
condition est facultative. Ceci est différent de la norme ANSI et différent de presque toutes les autres bases de données. L'effet est uncross join
. De même, vous pouvez utiliser uneon
clause withcross join
, qui diffère également du SQL standard.Une jointure croisée crée un produit cartésien, c'est-à-dire toutes les combinaisons possibles d'une ligne de la première table et d'une ligne de la seconde. La jointure croisée pour une table avec trois lignes («a», «b» et «c») et une table avec quatre lignes (disons 1, 2, 3, 4) aurait 12 lignes.
En pratique, si vous souhaitez effectuer une jointure croisée, utilisez
cross join
:est bien mieux que:
et:
La
on
clause est requise pour une jointure externe droite ou gauche, la discussion n'est donc pas pertinente pour eux.Si vous avez besoin de comprendre les différents types de jointures, vous devez étudier les bases de données relationnelles. Stackoverflow n'est pas un endroit approprié pour ce niveau de discussion.
la source
Voir quelques exemples sur http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Vous pouvez utiliser "USING" au lieu de "ON" comme dans la requête
la source