“商品”表 及び“自社製品”表に対して次の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 |