表の結合③(外部結合)



表の結合③(外部結合)

1.左外部結合

左外部結合は、左側の表を優先し、左側の表の全ての行を出力する結合方法です。基本構文としては、LEFT OUTER JOINというキーワードを使って左外部結合を表現します。

実行前に、商品表と受注表の状態を再確認します。

商品表(8件)

受注表(14件)

それでは左外部結合のSQLを実行します。SQLは以下のとおりとなります。

SELECT S.商品コード, S.商品名, S.単価, J.得意先名, J.商品コード
FROM 商品 S LEFT OUTER JOIN 受注 J
ON S.商品コード = J.商品コード;

※.Oracleでは、WHERE句の結合条件で優先しない方の表の列名に、(+)という記号を付けます。

結果は以下のとおりとなります。

ここで、商品コードが12の行に注目します。元の表では、商品表には存在しますが、受注表には存在しません。つまり、この商品は受注されなかったので受注表にはレコードがありません。このSQLでは左側のテーブル(商品表)を優先するので、商品表は全行出力しますが、受注表からの情報はないのでNULLで返却します。

2.右外部結合

右外部結合は、右側の表を優先し、右側の表の全ての行を出力する結合方法です。基本構文としては、RIGHT OUTER JOINというキーワードを使って右外部結合を表現します。
それでは右外部結合のSQLを実行します。SQLは以下のとおりとなります。

SELECT S.商品コード, S.商品名, S.単価, J.得意先名, J.商品コード
FROM 商品 S RIGHT OUTER JOIN 受注 J
ON S.商品コード = J.商品コード;

※.Oracleでは、WHERE句の結合条件で優先しない方の表の列名に、(+)という記号を付けます。

結果は以下のとおりとなります。

出力結果を見てみると、全ての商品コードが対応して出力されています。

外部結合の説明は以上です。次回からは、サブクエリーの説明を行います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です