ソフトウェア開発技術者試験 2002年度 = 平成14年度 午前 問72

 “業者”表、“仕入れ業者”表に対する次のSQL文と同じ結果が得られるSQL文はどれか。ここで、業者と仕入れ業者の表構造は次のとおりである(下線部は主キーを表す)。
  業者(業者番号, 業者名)
  仕入れ業者(商品番号, 業者番号

SELECT 業者名 FROM 業者, 仕入れ業者
  WHERE 業者.業者番号 = 仕入れ業者.業者番号 AND 商品番号 = 100

ア SELECT 業者名 FROM 業者 WHERE NOT EXISTS
     (SELECT * FROM 仕入れ業者 WHERE 商品番号 = 100)

イ SELECT 業者名 FROM 業者 WHERE NOT EXISTS
     (SELECT 商品番号 FROM 仕入れ業者 WHERE 商品番号 = 100)

ウ SELECT 業者名 FROM 業者 WHERE 業者番号 IN
     (SELECT 業者番号 FROM 仕入れ業者 WHERE 商品番号 = 100)

エ SELECT 業者名 FROM 業者 WHERE 商品番号 IN
     (SELECT 商品番号 FROM 仕入れ業者 WHERE 商品番号 = 100)

解答



解説

 問題文で与えられたSQL文は、商品番号100を扱う仕入先の業者名を取り出します。

 商品番号が100である行が1件でも存在すれば何も出力せず、そうでなければ“業者”表の業者名をすべて出力します。

 商品番号が100である行が1件でも存在すれば何も出力せず、そうでなければ“業者”表の業者名をすべて出力します。

 正解です。

 “仕入れ業者”表から商品番号が100である行を抽出し、その商品番号をもつ行を“業者”表から取り出します(“業者”表には商品番号はありませんからエラーです)。


BohYoh.comトップページへ