問題
問30 ”注文”表と”製品”表に対して、次のSQL文を実行したときに得られる結果はどれか。
SELECT 製品名, 数量 FROM 注文, 製品
WHERE 注文.製品コード = 製品.製品コード
解説と解答
問題のSQL文を見ると、
SELECT 製品名, 数量 FROM 注文, 製品
とあるので、「注文」表と「製品」表から、「製品名」「数量」のデータを選択することが分かります。また、
WHERE 注文.製品コード = 製品.製品コード
の条件があります。
「注文」表の上から、「製品コード」をもとに「製品」表の「製品名」を当てはめます。下記表中の( )つき数字と文字は、説明のために補記したものです。
等価結合は指定した列に同等の値を持つ行を結合しますが、条件のデータがどちらかの表に存在しない場合は、行全体が結果に含まれません。本問では2つの表の「製品コード」が等しいことが条件となっているものの、「製品表」には「P8」という製品コードがありませんので、結果にはこの行を含みません。
以上から、結果の表は、上の「(ニ)、(ロ)」の列を「(4)」を除いて表示したものとなります。
正解はウです。
他の選択肢も確認しておきましょう。
ア:5行目のPCが含められていません。
イ:重複した行をまとめる指示はないので、PCの数量を合算させません。
エ:4行目のP8は選択されませんので、表には含めません。
したがって、いずれも誤りです。