問題

問30 ”注文”表と”製品”表に対して、次のSQL文を実行したときに得られる結果はどれか。

SELECT 製品名, 数量 FROM 注文, 製品
  WHERE 注文.製品コード = 製品.製品コード

解説と解答

問題のSQL文を見ると、
 SELECT 製品名, 数量 FROM 注文, 製品
とあるので、「注文」表と「製品」表から、「製品名」「数量」のデータを選択することが分かります。また、
WHERE 注文.製品コード = 製品.製品コード
の条件があります。

 「注文」表の上から、「製品コード」をもとに「製品」表の「製品名」を当てはめます。下記表中の( )つき数字と文字は、説明のために補記したものです。

 等価結合は指定した列に同等の値を持つ行を結合しますが、条件のデータがどちらかの表に存在しない場合は、行全体が結果に含まれません。本問では2つの表の「製品コード」が等しいことが条件となっているものの、「製品表」には「P8」という製品コードがありませんので、結果にはこの行を含みません。

 以上から、結果の表は、上の「(ニ)、(ロ)」の列を「(4)」を除いて表示したものとなります。

 正解はウです。

 他の選択肢も確認しておきましょう。
ア:5行目のPCが含められていません。
イ:重複した行をまとめる指示はないので、PCの数量を合算させません。
エ:4行目のP8は選択されませんので、表には含めません。
したがって、いずれも誤りです。

鈴木 啓一郎(すずき・けいいちろう)
ITに関するコンサルティングや教育を実施するアイティ・アシストのインストラクタ。新入社員研修や各種ベンダー試験、基本情報技術者試験、応用情報技術者試験などの対策研修も手がけている。ITストラテジスト、システム監査技術者などの資格を所持。