ON fait partie de la syntaxe

Est-il possible d'écrire une jointure interne ou une jointure externe sans spécifier la condition? La ON condition fait-elle partie de la syntaxe de la condition de jointure?

lors de l'utilisation de la syntaxe ANSI SQL-92 , le mot key ON fait partie de la jointure à l'exception de la cross join car vous n'avez pas de condition pour la relation.

ex.

JOINTURE INTERNE

 SELECT * FROM tableA INNER JOIN tableB on tableA.ID = tableB.ID 

CROSS JOIN

 SELECT * FROM tableA CROSS JOIN tableB 

ON doit être suivi après la table jointe (joint comme INNER et OUTER ) afin que vous n'ayez pas d'erreur de syntaxe. mais si vous utilisez la syntaxe ANSI SQL-89 , le mot key ON est omis mais vous devez spécifier la relation sur la where clause

ex.

JOINTURE INTERNE

 SELECT * FROM tableA, tableB WHERE tableA.ID = tableB.ID 

CROSS JOIN

 SELECT * FROM tableA, tableB 

il est sujet à l'erreur parce que si vous oubliez la condition, il ne générera pas d'erreur de syntaxe et fera probablement la cross join

Non, vous ne devez pas spécifier ON , vous pouvez le faire dans un WHERE :

 SELECT * FROM tableA, tableB WHERE tableA.Id = tableB.Id 

mais cela est sujet à l'erreur (facile à finir avec CROSS JOIN s) et est généralement mal vu. Voir ici pour les arguments contre.

EDIT : Pour être plus précis, vous pouvez JOIN utilisant l'ancienne syntaxe de style ci-dessus, qui ne nécessite pas un ON , mais si vous vous joignez explicitement en utilisant INNER | LEFT | FULL INNER | LEFT | FULL INNER | LEFT | FULL etc. alors oui , ON fait partie de la syntaxe. MSDN page avec les exigences syntaxiques précises.

Vous pouvez faire une jointure implicite sans utiliser la syntaxe de jointure:

 select a.fred, b.joe from tableApple as a, tableBread as b where a.key1 = b.key1 

Mais je suis assez certain sur est requirejs pour les jointures explicites. Vous obtiendrez une erreur de syntaxe incorrecte. Signification de la jointure explicite:

 select a.fred, b.joe from tableApple as a left join tableBread as b on a.key1 = b.key1 where a.key1 = 'sally'