本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成24年度 技術士第一次試験問題【専門科目】

W−26

“商品”表 及び“自社製品”表に対して次のSQL文を実行した結果、得られる行数として正しいものはどれか。ここで、表の下線は主キーを表す。

  商品            自社製品
 ┌──────┬────┐ ┌──────┬────┐
 │ 商品番号 │ 価格 │ │ 商品番号 │ 工場 │
 ┝━━━━━━┿━━━━┥ ┝━━━━━━┿━━━━┥
 │P1    │ 100│ │P1    │東京  │
 ├──────┼────┤ └──────┴────┘
 │P2    │ 300│
 ├──────┼────┤
 │P3    │ 200│
 └──────┴────┘


【SQL 文】
 SELECT 商品番号, 価格
  FROM 商品
  WHERE NOT EXISTS
   (SELECT *
    FROM 自社製品
    WHERE 商品.商品番号 = 自社製品.商品番号)

@ 0  A 1  B 2  C 3  D 4


正解

B


解説

SELECT * FROM 自社製品
WHERE 商品.商品番号 = 自社製品,商品番号
は、「“自社製品”のテーブルの中から、商品テーブルの商品番号と
自社製品テーブルの商品番号が一致するレコードの

全部項目 (商品番号と工場) を取り出す。
」というSQL文である。
これによって、
P1 東京
が選択される。

NOT EXISTS (  ) は、「( )内以外の条件で
という意味であり、
NOT EXISTS ( SELECT * FROM 自社製品
WHERE 商品.商品番号 = 自社製品,商品番号 )
によって、
P1 東京
除外される。

SELECT 商品番号, 価格 FROM 商品 WHERE
は、「商品テーブルから WHERE以下の条件に合うレコードの、
商品番号と価格を取り出す。
」ということであり、

SELECT 商品番号, 価格 FROM 商品
 WHERE
 NOT EXISTS ( SELECT * FROM 自社製品
WHERE 商品.商品番号 = 自社製品,商品番号 )
によって、商品テーブルから、
P1
除外した結果残ったレコード、すなわち、
P2 300
P3 200

取り出すことになる。

W−25 目次 W−27