Il existe une NATURAL JOIN
:
SELECT *
FROM subscription
NATURAL JOIN delivery;
Citant le manuel sur SELECT
:
Cela fonctionnerait pour votre configuration de test, mais il ne fait pas strictement ce que vous demandez . La connexion est basée sur toutes les colonnes partageant le même nom. Les clés étrangères ne sont pas prises en compte. Les cas où NATURAL JOIN
est une bonne idée sont rares.
Simplifier le code / moins verbeux
Pour commencer, vous pouvez utiliser des alias de table et vous n'avez pas besoin de parenthèses autour des conditions de jointure avec ON
(contrairement à USING
):
SELECT *
FROM subscription s
JOIN delivery d ON d.magazine_id = s.magazine_id
AND d.user_id = s.user_id;
Étant donné que les noms de colonne dans les conditions de jointure sont identiques, vous pouvez encore simplifier avec USING
:
SELECT *
FROM subscription s
JOIN delivery d USING (magazine_id, user_id);
Il n'y a pas de variante de syntaxe qui crée automatiquement des jointures basées sur des contraintes de clé étrangère. Vous auriez à interroger les catalogues système et à créer dynamiquement le SQL.