平成24年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
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

取り出すことになる。

EXCELのマクロのご相談なら ファーストマクロ 



W−25 目次 W−27
ファーストマクロ TOPページ