四つの表“注文”、“顧客”、“商品”、“注文明細”がある。
これらの表から、次のビュー“注文一覧”を作成するSQL文はどれか。
ここで、下線の項目は主キーを表す。
注文(注文番号, 注文日, 顧客番号)
顧客(顧客番号, 顧客名)
商品(商品番号, 商品名)
注文明細(注文番号, 商品番号, 数量, 単価)
注文一覧
|
ア | CREATE VIEW 注文一覧 AS SELECT * FROM 注文、顧客、商品、注文明細 WHERE 注文.注文番号=注文明細.注文番号 AND 注文.顧客番号=顧客.顧客番号 AND 商品.商品番号=注文明細.商品番号 |
イ | CREATE VIEW 注文一覧 AS SELECT 注文.注文番号, 注文日, 顧客名, 商品名, 数量, 単価 FROM 注文、顧客、商品、注文明細 WHERE 注文.注文番号=注文明細.注文番号 AND 注文.顧客番号=顧客.顧客番号 AND 商品.商品番号=注文明細.商品番号 |
ウ | CREATE VIEW 注文一覧 AS SELECT 注文.注文番号, 注文日, 顧客名, 商品名, 数量, 単価 FROM 注文、顧客、商品、注文明細 WHERE 注文.注文番号=注文明細.注文番号 OR 注文.顧客番号=顧客.顧客番号 OR 商品.商品番号=注文明細.商品番号 |
エ | CREATE VIEW 注文一覧 AS SELECT 注文.注文番号, 注文日, 商品名, 数量, 単価 FROM 注文、顧客、商品、注文明細 WHERE 注文.注文番号=注文明細.注文番号 AND 商品.商品番号=注文明細.商品番号 |
答え イ
【解説】
ア | 『AS SELECT * FROM 注文, 顧客, 商品, 注文明細』は、各表のすべての項目を出力する意味なので正しくない。 |
イ | このSQL文は正しい。 |
ウ | 『WHERE … OR … OR …』だと、各条件にあったものをすべて出力するので正しくありません。 |
エ | 『AS SELECT 注文.注文番号, 注文日, 商品名, 数量, 単価』に「顧客名」がないので、顧客名が出力されないので正しくない。 |
【キーワード】
・SQL