# 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

親トピック: JOIN 演算