LEFT OUTER JOIN演算 LEFT OUTER JOIN operation

LEFT OUTER JOIN演算は、join節を記述できるJOIN演算の一つです。 この演算では最初の(左の)表にて、一致する行が二つ目の(右の)表にない行は、二つ目の表のNULLの行に結合されたものとして、結果に残ります。

構文 表式 LEFT [ OUTER ] JOIN 表式 { ON 真偽式 }

ON節にあるいずれの真偽式も、直接の表と直接の問い合わせ文にあるいかなる表を参照することができます。 ON節は結合されていない表を参照することもできますし、結合されている表を参照しなくともかまいません。(ただし一般的には参照します。)

例 1--都市に対応するアジアの国 SELECT CITIES.COUNTRY, CITIES.CITY_NAME, REGION FROM Countries LEFT OUTER JOIN Cities ON CITIES.COUNTRY_ISO_CODE = COUNTRIES.COUNTRY_ISO_CODE WHERE REGION = 'Asia' -- LEFT JOINという別の書き方により、前例と同じ結果を -- 実現する。 SELECT COUNTRIES.COUNTRY, CITIES.CITY_NAME,REGION FROM COUNTRIES LEFT JOIN CITIES ON CITIES.COUNTRY_ISO_CODE = COUNTRIES.COUNTRY_ISO_CODE WHERE REGION = 'Asia' 例 2 -- EMPLOYEEとDEPAETMENTという表を結合して、 -- 1930より前に生まれた(BIRTHDATE)全ての社員の、 -- 社員番号(EMPNO)と、 -- 社員の苗字(LASTNAME)と、 -- 部署番号(EMPLOYEEという表のWORKDEPTと、DEPARTMENTという表のDEPTNO)と、 -- 部署名(DEPTNAME)を選択する。 SELECT EMPNO, LASTNAME, WORKDEPT, DEPTNAME FROM SAMP.EMPLOYEE LEFT OUTER JOIN SAMP.DEPARTMENT ON WORKDEPT = DEPTNO AND YEAR(BIRTHDATE) < 1930 -- 管理者のいない部署を含め全ての部署を、 -- 部署の管理者の社員番号と苗字と共に一覧する。 SELECT DEPTNO, DEPTNAME, EMPNO, LASTNAME FROM DEPARTMENT LEFT OUTER JOIN EMPLOYEE ON MGRNO = EMPNO