###GROUP BYと副照会の共存について
学校の課題でわからないところがあり、投稿させていただきました。
特に副照会とGROUP BYの共存の仕方についてです。
まず、課題というのは「大阪商会が発注した商品と同じ商品を発注したことのある顧客の顧客名とその住所のリストを返すSQLコマンドを作成せよ。ただし、同じ企業名が重複して表示されないようにすること」というものです。(課題で使う、データベースについては下に画像として張っておきます。少し見にくいかもしれませんが、)
僕はこの課題を攻略するため、
① 顧客表と受注明細表を結合
↓
②顧客表の大阪商会という行を選ぶ。
↓
③そこから受注明細表の商品番号(つまり、大阪商会が買った商品番号)を取得
↓
④副照会を使い、③の商品番号と、受注明細表の商品番号をつきあわせる(大阪商会の買った商品を買った顧客番号を得るため)
↓
⑤かぶっている顧客名をGROUP BYでまとめる
↓
⑥顧客表と受注明細表を結合
↓
⑦④の顧客番号を見て、顧客表から顧客名を割り出す。
という道筋を立てました。
しかし、題目にも書いた通り⑤の部分、「かぶっている顧客名をGROUP BYでまとめる」ことができませんでした。
というのも、GROUP BYをどこに書いたとしてもエラーとなってしまうからです。
以下は⑤を抜いたコードです。
SQL
1SELECT KOKYAKUMEI 7 2FROM KOKYAKU X ,JMEISAI Y 3WHERE X.KOKYAKUNO=Y.KOKYAKUNO 6 4AND Y.SHOHINNO IN( 4 5SELECT SHOHINNO 3 6FROM KOKYAKU X,JMEISAI Y 7WHERE X.KOKYAKUNO=Y.KOKYAKUNO 1 8AND X.KOKYAKUMEI='大阪商会' 2 9) 10 11・・・ 12GROUP BY KOKYAKUMEI 5 13・・・どこに書いてもエラー
このコードの結果は狙い通り、上手くでました。
東京商事 東京商事 大阪商会 大阪商会 西中国商店
あとはこれをまとめればいいだけなのですが、その一線がどうしても超えられません。
つまり、GROUP BYと副照会の共存についてできません。
私の考えた方のどこが間違っているのか・・・?
どうかご教授おねがします!!!
回答2件
あなたの回答
tips
プレビュー