1週間でSQLの基礎をマスター

外部結合

テーブル結合したSELECT文(LEFT OUTER JOIN)

例えば実際の現場では新しく社員は入って来たけど、まだ配属する部署は
決まっていないけど、システムにはとりあず登録しないといけないという
ケースがあるかと思います。

では部署の決まっていない社員を登録して見ましょう。

INSERT INTO STAFF (STAFF_CD, DEPARTMENT_CD, NAME, AGE, SEX, MAIL, BLOOD_TYPE, JOINED_DATE) VALUES
 ('10011', '999', '山本健太', 22, '男', 'hhh@a.co.jp', 'O', '2016/04/01');

※ひとまず、部署CDにはダミーコード「999」を登録します。

では登録後、内部結合で社員の名前と、所属している部署名を検索する
SQLを流して見て下さい。

SELECT NAME, DEPARTMENT_NM FROM STAFF
INNER JOIN DEPARTMENT ON STAFF.DEPARTMENT_CD = DEPARTMENT.DEPARTMENT_CD

登録したレコード、山本健太が取得できないのがわかりますでしょうか。
これは999という値が部署テーブルに存在しないからです。
では以下のSQLを流してみて下さい

SELECT NAME, DEPARTMENT_NM FROM STAFF
LEFT OUTER JOIN DEPARTMENT ON STAFF.DEPARTMENT_CD = DEPARTMENT.DEPARTMENT_CD

登録したレコードが取得できたのがわかりますでしょうか。
これは外部結合と呼ばれていて、結合先のテーブルにレコードが存在しない場合でも、
データを取得することができます。

逆に内部結合は結合先のテーブルにレコードが存在しない場合は、データを取得することができません。

配属先の部署が決まっていないけど、先に社員は登録しておくというようなシステムでは
社員と部署に取得するSQLに外部結合が使用されたりしています。
inserted by FC2 system