Comment utiliser mysql JOIN sans condition?

est-il possible d'écrire join query sans la déclaration ON ? et comment ces jointures diffèrent LEFT JOIN, RIGHT JOIN .

66
demandé sur Alexander T. 2013-05-10 00:54:33

3 réponses

MySQL documentation couvre ce sujet.

voici un résumé. Lorsque vous utilisez join ou inner join , la condition on est facultative. Cela diffère de la norme ANSI et de presque toutes les autres bases de données. L'effet est un cross join . De même , vous pouvez utiliser une clause on avec cross join , qui diffère également du SQL standard.

un assemblage de croix crée un Produit cartésien -- c'est-à-dire toute combinaison possible d'une rangée de la première table et d'une rangée de la deuxième. La croix de jointure d'une table avec trois lignes ('a', 'b' et 'c') et une table avec quatre lignes (1, 2, 3, 4) aurait 12 lignes.

Dans la pratique, si vous voulez faire une jointure croisée, puis utiliser cross join :

from A cross join B

est beaucoup mieux que:

from A, B

et:

from A join B -- with no on clause

La clause on est nécessaire pour une jointure extérieure droite ou gauche, de sorte que la discussion n'est pas pertinente pour eux.

si vous avez besoin de comprendre les différents types de jointures, alors vous devez faire des études sur les bases de données relationnelles. Le débordement des piles n'est pas un endroit approprié pour ce niveau de discussion.

97
répondu Gordon Linoff 2013-05-09 21:26:37

voir un exemple dans http://www.sitepoint.com/understanding-sql-joins-mysql-database /

vous pouvez utiliser 'USING' au lieu de ' ON ' comme dans la requête

SELECT * FROM table1 LEFT JOIN table2 USING (id);
6
répondu Manu 2013-10-30 10:35:57

vous pourriez également vouloir étudier L'utilisation de L'UNION, qui combine plusieurs tables pour une sortie: SQL-combiner deux tables pour une sortie

1
répondu TARKUS 2017-05-23 11:54:37