外部結合
■テーブル結合した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に外部結合が使用されたりしています。