ID等で紐づけできる2つのテーブルのカラムを,PostgreSQLで結合する方法について扱います.

目次

  1. 両方揃ったデータについて結合する(INNER JOIN)
  2. 一方をマスタとして結合する(OUTER JOIN)
  3. 参考文献

両方揃ったデータについて結合する(INNER JOIN)

結合しようとするテーブルで,いずれのテーブルでもそれらのデータに欠損した部分がないものを抽出することができます(内部結合).

次は,Table1Table2のそれぞれに含まれるidというカラムにより2つのテーブルを紐付け,「idカラム」・「Table1col1カラム」・「Table2col2カラム」の3カラムを抽出する内部結合の例です.

SELECT T1.id, T1.col1, T2.col2
FROM Table1 AS T1 INNER JOIN Table2 AS T2
ON T1.id = T2.id
WHERE 以下略;

一方をマスタとして結合する(OUTER JOIN)

FROM句で左側にくる始めのテーブルをマスタとして,右側のテーブルに欠損値があったとしても結合しようとするなら,

SELECT T1.id, T1.col1, T2.col2
FROM Tabel1 AS T1 LEFT OUTER JOIN Table2 AS T2
ON T1.id = T2.id
WHERE 以下略;

とします(外部結合).
この場合,左側のテーブルのデータは元の通り入りますが,右側のテーブルからは確認できないデータについてNULLが入ります.

直積はCROSS JOINで得られます.

参考文献

SQLの方言に配慮しつつ,リレーショナルデータベースの操作を一から説明している入門書です.

  • ミック (2016)「SQL」第2版,翔泳社.