RIGHT OUTER JOIN 演算

RIGHT OUTER JOIN演算は、JOIN節に置くことのできるJOIN演算の一種です。 この式では、一つ目(左)の表に合う行がない二つ目(右)の表にある行も結果に残ります。そのとき一つ目の表からの情報はNULLと扱われます。A LEFT OUTER JOIN B は B RIGHT OUTER JOIN Aと、列の順が違う事を除けば同じです。

構文

表式 RIGHT [ OUTER ] JOIN 表式
{
    ON 真偽式 
    }

ON節にて可視なのは、直接の表と直接のSELECTによる問合せにある表です。 ON節では結合されていない表を参照することもできますし、結合している表を参照しなくともかまいません。(ただし一般的には参照します。)

例1

-- 都市のない国を含めた、
-- 全ての国と都市の一覧を得ます。

SELECT COUNTRIES.COUNTRY, CITIES.CITY_NAME 
FROM CITIES 
RIGHT OUTER JOIN COUNTRIES 
ON CITIES.COUNTRY_ISO_CODE = COUNTRIES.COUNTRY_ISO_CODE

-- 都市のない国を含めた、
-- アフリカの全ての国と都市の一覧を得ます。

SELECT COUNTRIES.COUNTRY, CITIES.CITY_NAME
FROM CITIES 
RIGHT OUTER JOIN COUNTRIES 
ON CITIES.COUNTRY_ISO_CODE = COUNTRIES.COUNTRY_ISO_CODE
WHERE Countries.region = 'Africa'

-- RIGHT JOINという同じ内容の記述により、
-- 前の例と同じ結果を得ます。
SELECT COUNTRIES.COUNTRY, CITIES.CITY_NAME
FROM CITIES 
RIGHT JOIN COUNTRIES 
ON CITIES.COUNTRY_ISO_CODE = COUNTRIES.COUNTRY_ISO_CODE
WHERE Countries.region = 'Africa'

例2

-- 演算は表式の一つです。
-- なのでFRON句には複数の演算を置くことができます。
-- 以下の例では全社員の社員番号と苗字を、
-- その社員の管理者の社員番号と苗字と共に一覧します。

SELECT E.EMPNO, E.LASTNAME, M.EMPNO, M.LASTNAME	
	FROM EMPLOYEE E RIGHT OUTER JOIN	
	DEPARTMENT RIGHT OUTER JOIN EMPLOYEE M 
        ON MGRNO = M.EMPNO
        ON E.WORKDEPT = DEPTNO