左外部結合

左外部結合 は、表を結合する方式です。 結果には、LEFT OUTER JOIN 節より前に指定された表からの一致しない行のみが含まれます。

2 つの表を結合し、結果セットに一方の表のみからの一致しない行が含まれるようにする場合は、LEFT OUTER JOIN 文節または RIGHT OUTER JOIN 文節を使用します。 マッチングは結合条件に基づいて行われます。

文節 LEFT OUTER JOIN は、LEFT OUTER JOIN の前に指定された 表の行で、LEFT OUTER JOIN の後に指定された表に一致する値を持たない行を組み込みます。

内部結合と同様に、結合条件は、副照会を含まない 単純検索条件または複合検索条件のいずれでも構いません。

左外部結合の例

この例では、PARTSとPRODUCTSテーブルに以下の行が含まれていると仮定します

          PARTS table                             PRODUCTS table
PART      PROD#   SUPPLIER              PROD#     PRODUCT        PRICE
=======   =====   ============          =====     ===========    =====
WIRE      10      ACWF                  505       SCREWDRIVER    3.70
OIL       160     WESTERN_CHEM          30        RELAY          7.55
MAGNETS   10      BATEMAN               205       SAW            18.90
PLASTIC   30      PLASTIK_CORP          10        GENERATOR      45.75
BLADES    205     ACE_STEEL

PRODUCTS 表の中には一致する値がない行を PARTS 表から 組み込み、かつ、10.00 を超える価格を組み込むには、次の照会を実行します。

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT, PRICE
  FROM PARTS LEFT OUTER JOIN PRODUCTS
    ON PARTS.PROD#=PRODUCTS.PROD#
       AND PRODUCTS.PRICE>10.00;

結果表は、以下の出力のようになります。

PART        SUPPLIER       PROD#     PRODUCT        PRICE
=======     ============   =====     ==========     =====
WIRE        ACWF           10        GENERATOR      45.75
MAGNETS     BATEMAN        10        GENERATOR      45.75
PLASTIC     PLASTIK_CORP   30        -----------  -------
BLADES      ACE_STEEL      205       SAW            18.90
OIL         WESTERN_CHEM   160       -----------  -------

PRODUCTS 表からの行が結果表に入るのは、PRODUCTS 表の製品番号が PARTS 表の行の製品番号と一致し、 かつ価格がその行の 10.00 を超える場合に限られます。 PRICE 値が 10.00 を超えない行は、 結合の結果に含まれますが、PRICE 値は NULL に設定されます。

この結果表で、PROD# 30 の価格が 10.00 未満であるため、PROD# 30 の行の 右の 2 つの列の値は NULL です。 PROD# 160 がもう一方の表の製品番号と一致しないため、PROD# 160 の右の 2 つの列の値は NULL です。