左外部結合と全外部結合
ありがとうさん
(No.1)
左が右を含んでいる場合は、LEFT JOINでもFULL JOINでも同じ結果になると思ったのですが、
24年 午後I 問3 設問1のaで
LEFT JOINとなっていますが、FULL JOINが正解でない理由がわかりません。
よろしくお願いします。
24年 午後I 問3 設問1のaで
LEFT JOINとなっていますが、FULL JOINが正解でない理由がわかりません。
よろしくお願いします。
2019.01.02 13:34
DBS勉強中さん
(No.2)
同じく勉強中の身ではありますが、私の見解を。(わかりづらかったらすみません・・・)
FULL OUTER JOINはざっくり言うと「LEFT OUTER JOIN+RIGHT OUTER JOIN」ですが、
RIGHT OUTER JOIN側の結果は邪魔になるのでLEFT OUTER JOINで問題ないかと思います。
商品テーブルに対して、店舗売上テーブルをRIGHT OUTER JOINするとなると、
店舗売上テーブルの全レコードに対して、ON句以下の結合条件に当てはまる商品テーブルのレコードを結合していくことになります。
設問では結合条件に「商品.商品番号=店舗売上.商品番号 AND 店舗売上.売上日=2011/04/01 AND 店舗売上.店舗コード='M001'」をつけていますが、
商品テーブルのレコードから上記結合条件で探しても対象レコードはなく、外部結合の場合は結合先がなくても結合元のレコードが残るため、店舗売上の全レコードにNULLが結合されたものが抽出結果になって出てきてしまいます。
そのため、RIGHTでもFULLでもなく、LEFT JOINが答えになるかと思うのですが、どうでしょうか。
目的の抽出結果になるかは一旦置いておいて、WHERE句以下に売上日や店舗コードの抽出条件があればLEFTでもRIGHTでもFULLでも同じ結果になると思います。
FULL OUTER JOINはざっくり言うと「LEFT OUTER JOIN+RIGHT OUTER JOIN」ですが、
RIGHT OUTER JOIN側の結果は邪魔になるのでLEFT OUTER JOINで問題ないかと思います。
商品テーブルに対して、店舗売上テーブルをRIGHT OUTER JOINするとなると、
店舗売上テーブルの全レコードに対して、ON句以下の結合条件に当てはまる商品テーブルのレコードを結合していくことになります。
設問では結合条件に「商品.商品番号=店舗売上.商品番号 AND 店舗売上.売上日=2011/04/01 AND 店舗売上.店舗コード='M001'」をつけていますが、
商品テーブルのレコードから上記結合条件で探しても対象レコードはなく、外部結合の場合は結合先がなくても結合元のレコードが残るため、店舗売上の全レコードにNULLが結合されたものが抽出結果になって出てきてしまいます。
そのため、RIGHTでもFULLでもなく、LEFT JOINが答えになるかと思うのですが、どうでしょうか。
目的の抽出結果になるかは一旦置いておいて、WHERE句以下に売上日や店舗コードの抽出条件があればLEFTでもRIGHTでもFULLでも同じ結果になると思います。
2019.01.07 14:36
ありがとうさん
(No.3)
ありがとうございます。
勉強になります。
もっと理解を深めていきます。
勉強になります。
もっと理解を深めていきます。
2019.01.08 10:16
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。