仕様と根拠
結合の種類と条件
JOIN には CROSS(全組み合わせ)・INNER(既定)・LEFT / RIGHT / FULL(外部結合)があり、INNER と外部結合は ON か USING か NATURAL で結合条件を決めます(7.2.1.1 節)。CROSS JOIN は条件を取りません。
USING・NATURAL・カンマ
USING は同名の列の組で結び、結果にその列が 1 列だけ出ます。NATURAL は両方の表に共通する名前の列すべてで結びます。FROM T1, T2 は CROSS JOIN と同じですが、JOIN のほうが強く結び付きます(7.2.1.1 節)。
外部結合の ON と WHERE
ON の条件は結合の前、WHERE の条件は結合の後に適用されます。内部結合では差がありませんが、外部結合では結果が変わるため、外部結合と WHERE が同居するときに情報として知らせます(7.2.1.1 節)。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| PostgreSQL 18 ドキュメント 7.2 テーブル式 | 2026年10月28日 | 7.2.1.1 結合テーブル(CROSS・INNER・OUTER・NATURAL・ON・USING・ON と WHERE の違い) |
| PostgreSQL 18 ドキュメント 4.1 字句構造 | 2026年10月28日 | 4.1.1(識別子と引用符)・4.1.2.1(文字列)・4.1.5(コメント) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 完全な SQL の構文解析はしません。サブクエリや括弧で囲んだ結合の中身は読まず、「(サブクエリ)」「(括弧つきの結合)」として表に出します。
- ON の条件の正しさ(列が存在するか・型が合うか)は判定しません。条件の文字列をそのまま表示します。
- UPDATE ... FROM や DELETE ... USING の結合は対象外で、SELECT 文だけを読みます。
- WITH 句(共通テーブル式)で始まる問い合わせは判定不能と表示します。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。