メインコンテンツへ
データベース

顧客テーブル、注文テーブル、商品テーブルを結合して「顧客名」「注文日」「商品名」を取得するSQL文として正しいものはどれか。(顧客.id=注文.顧客id, 注文.商品id=商品.id)

ア.SELECT 顧客名, 注文日, 商品名 FROM 顧客, 注文, 商品
イ.SELECT 顧客名, 注文日, 商品名 FROM 顧客 JOIN 注文 JOIN 商品
ウ.SELECT 顧客名, 注文日, 商品名 FROM 顧客 JOIN 注文 ON 顧客.id = 注文.顧客id JOIN 商品 ON 注文.商品id = 商品.id正解
エ.SELECT 顧客名, 注文日, 商品名 FROM 顧客 INNER JOIN 注文 WHERE 顧客.id = 注文.顧客id AND 注文.商品id = 商品.id

解説

3テーブルJOINは「3つのパズルピースをつなぐ」作業。それぞれの接合部(ON句)を正確に指定することが重要。

なぜ ウ が正解か

JOINにはON句で結合条件を指定する必要がある。顧客 JOIN 注文 ON 顧客.id = 注文.顧客id で最初の結合、さらに JOIN 商品 ON 注文.商品id = 商品.id で2つ目の結合を連鎖させる正しい形。

なぜ ア は間違いか

FROM 顧客, 注文, 商品 は旧式の結合構文でON条件がなく、デカルト積(全組み合わせ)になってしまう。

なぜ イ は間違いか

JOIN 注文 JOIN 商品 はON句がなく文法エラー。結合条件なしでは実行できない。

なぜ エ は間違いか

INNER JOIN 注文 WHERE ... は結合条件をWHERE句に書いており、かつ3番目のテーブル商品の結合が記述されていない不完全な文。

出典: AI生成問題(学習用)