基本情報技術者試験 基本情報技術者試験 平成26年度 春期 午前 午前 問28: "商品"表,"在庫"表に対する次の SQL 文の結果と同じ結果が得られる SQL 文はどれか。ここで,下線部は主キーを表す。 SELECT 商品番号 FROM

基本情報技術者試験 平成26年度 春期 午前
Q 2828 / 80
"商品"表,"在庫"表に対する次の SQL 文の結果と同じ結果が得られる SQL 文はどれか。ここで,下線部は主キーを表す。 SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫) 商品(商品番号, 商品名, 単価) 在庫(倉庫番号, 商品番号, 在庫数)
元のSQL文(SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫))と、商品表(商品番号 主キー、商品名、単価)・在庫表(倉庫番号、商品番号 主キー、在庫数)のスキーマ
この問の正解率:64.75%(1,129件)

解説

基本情報技術者試験 平成26年度 春期 午前 問28「"商品"表,"在庫"表に対する次の SQL 文の結果と同じ結果が得られる SQL…」の正解と解説です。基本情報技術者試験の「SQL」分野の過去問で、これまでの受験者の正答率は約65%です。

正解

. SELECT 商品番号 FROM 商品 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)

正答率 64.7%(1,129人中 731人が正解)

問題の解説

元のSQLは「在庫に存在しない商品番号」を商品表から取り出すクエリです。これは『商品.商品番号に対応する在庫行が存在しない』ことを NOT EXISTS で相関副問合せで表すのと等価です。

選択肢ごとの解説

  • FROM が在庫表で、商品表との対応もとっておらず元クエリと結果が一致しません。
  • FROM が在庫表である時点で元クエリの対象集合と異なります。
  • EXISTS では在庫に対応行がある商品(=元クエリと逆)が抽出されます。
  • 商品表をFROMに置き、相関条件で在庫に対応行が「無い」ものを NOT EXISTS で取り出しており、元クエリと等価です。

基本情報技術者試験 平成26年度 春期 午前 の過去問一覧に戻る・問28

基本情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

基本情報技術者試験 合格.dev を App Store でダウンロード