Er is een NATURAL JOIN
:
SELECT *
FROM subscription
NATURAL JOIN delivery;
Citaat van de handleiding op SELECT
:
Het zou werken voor uw testopstelling, maar het doet niet strikt wat u vraagt . De verbinding is gebaseerd op alle kolommen met dezelfde naam. Buitenlandse sleutels worden niet in aanmerking genomen. De gevallen waarin NATURAL JOIN
een goed idee is, zijn er maar weinig.
Code vereenvoudigen / minder uitgebreid
Om te beginnen zou je tabelaliassen kunnen gebruiken en je hebt geen haakjes nodig rond de join-voorwaarden met ON
(in tegenstelling tot USING
):
SELECT *
FROM subscription s
JOIN delivery d ON d.magazine_id = s.magazine_id
AND d.user_id = s.user_id;
Aangezien kolomnamen in de deelnamevoorwaarden identiek zijn, kunt u verder vereenvoudigen met USING
:
SELECT *
FROM subscription s
JOIN delivery d USING (magazine_id, user_id);
Er is geen syntaxisvariant die automatisch joins maakt op basis van externe sleutelbeperkingen. Je zou de systeemcatalogi moeten doorzoeken en de SQL dynamisch moeten bouwen.