表の結合③(外部結合)
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句の結合条件で優先しない方の表の列名に、(+)という記号を付けます。
結果は以下のとおりとなります。
出力結果を見てみると、全ての商品コードが対応して出力されています。
外部結合の説明は以上です。次回からは、サブクエリーの説明を行います。
コメントを残す