OUTER JOINが全く理解できていなかった件
testdb=# \d member
Table "public.member"
Column | Type | Collation | Nullable | Default
---------+---------+-----------+----------+------------------------------------
no | integer | | not null | nextval('member_id_seq'::regclass)
name | text | | |
tel | integer | | |
groupno | integer | | |
boss | text | | |
testdb=# \d department
Table "public.department"
Column | Type | Collation | Nullable | Default
-----------+-------------------+-----------+----------+---------
groupno | integer | | |
groupname | character varying | | |
grouptel | character(11) | | |
boss | text | | |
testdb=# SELECT * FROM member NATURAL FULL OUTER JOIN department;
groupno | boss | no | name | tel | groupname | grouptel
---------+--------+----+------+------------+-----------+-------------
2 | 佐々木 | 1 | 佐藤 | 1201234567 | |
1 | 原田 | 2 | 鈴木 | 1201234568 | 営業部 | 01209234567
4 | 天野 | 3 | 渡辺 | 1201234569 | |
3 | 岩本 | | | | 管理部 | 01209234566
2 | 田中 | | | | 技術部 | 01219234569
(5 rows)
■OUTER JOIN (外部結合)
対象のテーブルから、結合キーの値が等しいデータに加えて、条件に一致しなかったデータも取得します。NATURALを用いると、名前が同じカラムを全て結合キーに指定します。
条件に一致しなかったデータをどのテーブルから取得するかはLEFT、LIGHT、FULLの中から選択します。
・LEFT:左側のテーブル(書式ではテーブル名1)から条件に一致しないデータを取得
・RIGHT:右側のテーブル(書式ではテーブル名2)から条件に一致しないデータを取得
・FULL:両側のテーブル(書式ではテーブル名1と2)から条件に一致しないデータを取得