In MySQL schrijven JOIN
ongekwalificeerd impliceert INNER JOIN
. Met andere woorden de INNER
in INNER JOIN
is optioneel. INNER
en CROSS
zijn synoniemen in MySQL. Voor de duidelijkheid schrijf ik JOIN
of INNER JOIN
als ik een lidmaatschapsvoorwaarde heb en CROSS JOIN
als ik geen aandoening heb.
De toegestane syntaxis voor joins wordt beschreven in de documentatie .
Het effect is hetzelfde, maar de geschiedenis erachter is anders. De kommasyntaxis is van de ANSI-89-standaard. Er zijn echter een aantal problemen met deze syntaxis, dus in de ANSI-92-standaard is het JOIN-sleutelwoord geïntroduceerd.
Ik raad je ten zeerste aan om altijd gebruik de JOIN-syntaxis in plaats van de komma.
T1 JOIN T2 ON ...
is beter leesbaar danT1, T2 WHERE ...
.- Het is beter te onderhouden omdat de tabelrelaties en filters duidelijk zijn gedefinieerd in plaats van door elkaar te worden gemengd.
- De JOIN-syntaxis is gemakkelijker te converteren naar OUTER JOIN dan de kommasyntaxis.
- Het mengen van de komma en de JOIN-syntaxis in dezelfde instructie kan merkwaardige fouten opleveren vanwege de voorrangsregels.
- Het is minder waarschijnlijk dat per ongeluk een cartesiaans product wordt gemaakt bij gebruik van de JOIN-syntaxis vanwege een vergeten join-clausule, omdat de join-clausules naast de joins worden geschreven en het gemakkelijk is om te zien of er een ontbreekt.