Es gibt einen NATURAL JOIN
:
SELECT *
FROM subscription
NATURAL JOIN delivery;
Zitieren von dem Handbuch zu SELECT
:
Es würde für Ihr Test-Setup funktionieren, aber es tut nicht genau das, wonach Sie fragen . Die Verbindung basiert darauf, dass alle Spalten denselben Namen haben. Fremdschlüssel werden nicht berücksichtigt. Die Fälle, in denen NATURAL JOIN
ist eine gute Idee, sind dünn gesät.
Code vereinfachen / weniger ausführlich
Für den Anfang könnten Sie Tabellenaliase verwenden und Sie brauchen keine Klammern um die Join-Bedingungen mit ON
(anders als bei USING
):
SELECT *
FROM subscription s
JOIN delivery d ON d.magazine_id = s.magazine_id
AND d.user_id = s.user_id;
Da die Spaltennamen in den Join-Bedingungen identisch sind, können Sie mit USING
weiter vereinfachen :
SELECT *
FROM subscription s
JOIN delivery d USING (magazine_id, user_id);
Es gibt keine Syntaxvariante, die Joins basierend auf Fremdschlüsselbeschränkungen automatisch erstellt. Sie müssten die Systemkataloge abfragen und die SQL dynamisch erstellen.