地域別に分かれている同じ構造の三つの商品表、“東京商品”、“名古屋商品”、“大阪商品”がある。
次のSQL文と同等の結果が得られる関係代数式はどれか。
ここで、三つの商品表の主キーは“商品番号”である。
また、X -Y はX からY の要素を除いた差集合を表す。
SELECT * FROM 大阪商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
UNION
SELECT * FROM 名古屋商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
ア | (大阪商品 ∩ 名古屋商品)-東京商品 |
イ | (大阪商品 ∪ 名古屋商品)-東京商品 |
ウ | 東京商品-(大阪商品 ∩ 名古屋商品) |
エ | 東京商品-(大阪商品 ∪ 名古屋商品) |
答え イ
【解説】
問題のSQL文の
SELECT * FROM 大阪商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
は、大阪商品の集合の中から、東京商品にも属している要素を取り除くことを意味している。
すなわち、
大阪商品-東京商品
である。
同様に問題のSQL文の
SELECT * FROM 名古屋商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
は、名古屋商品の集合の中から、東京商品にも属している要素を取り除くことを意味している。
すなわち、
名古屋商品-東京商品
である。
問題のSQLではこの2つを
UNION:和集合
しているので、
(大阪商品-東京商品) ∪ (名古屋商品-東京商品)
になる。
この式を、整理すると
(大阪商品 ∪ 名古屋商品)-東京商品
(イ)になる。
【キーワード】
・差集合