NATURAL JOIN とカンマ区切り

NATURAL JOIN とカンマ区切りの表を同じ FROM に並べた例です。条件を書かない結合が 2 種類あることと、それぞれの注意の情報を確かめます。

入力

SQL

SELECT * FROM a NATURAL JOIN b, c WHERE a.id = c.id

結果

エラー 0 件・警告 0 件・情報 2 件

指摘(エラー・警告・情報)

  • 情報 1 行目 b は NATURAL JOIN です。両方の表に共通する名前の列すべてで結合され、共通する名前が 1 つもなければ CROSS JOIN と同じ結果になります(7.2.1.1)。列を足したり名前を変えたりすると結合の条件が変わるため、ON か USING の明示が安全です。
  • 情報 1 行目 c はカンマで並べた表です。CROSS JOIN と同じで、条件は WHERE に書きます。3 つ以上の表を並べて JOIN と混ぜると、JOIN のほうが強く結び付く点に注意してください(7.2.1.1)。
表の数3 個
結合の数2 個
外部結合の数0 個

JOIN の対応表

JOIN の対応表
#結合の種類表(別名)条件の種類条件
1(最初の表)a--
2NATURAL INNER JOINbNATURAL共通する名前の列すべて
3カンマ(CROSS JOIN 相当)c--

検算(この結果になる理由)

NATURAL JOIN は共通する名前の列すべてで結ぶ結合、カンマは CROSS JOIN と同じです(7.2.1.1 節)。どちらも条件の記述は不要なのでエラーはなく、それぞれの注意を述べた情報が 2 件出ます。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
  • ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。

ほかの入力例