https://www.w3schools.com
でsqlの練習問題の提出があり、そちらを解こうとしています。
不明点
SQLで2つの表があります。
◼️オーダーテーブル
オーダーID
商品ID
個数
◼️商品テーブル
商品ID
商品名
値段
上記の2つのテーブルをjoinし、
オーダー詳細IDごとの会計を出したいです。
現状試したことなど
二つのテーブルをleft joinで結合し、それぞれの個数 * 値段の合計は出せました。
ですが、それをgroup by でオーダーIDごとにまとめようとするとエラーとなります。
###試しているコード
SELECT オーダー.オーダーID, 個数 * 商品.値段 AS "会計" FROM オーダー LEFT JOIN 商品 ON オーダー.商品ID = 商品.ID)
→結果
オーダーID 会計
1 200
1 400
1 200
2 100
2 100
3 1000
4 500
4 500
やりたいこととしては、オーダーIDごとに会計をまとめることです。
上記の結果を下記のようにしたいです。
オーダーID 会計
1 800
2 200
3 1000
4 1000
###試したことその2
GROUP BY を試そうと、オーダー.オーダーID
を最後につけると下記のエラーとなります。
You tried to execute a query that does not include the specified expression '個数 * 商品.値段' as part of an aggregate function.
group by はselectの前に実施されるから*が使えない?
といったような情報も見つけ、次に副問合せで上記の表を作ってから試してみました。
SELECT オーダー.オーダーID,"会計" FROM (SELECT オーダー.オーダーID, 個数 * 商品.値段 AS "会計" FROM オーダー LEFT JOIN 商品 ON オーダー.商品ID = 商品.ID) GROUP BY オーダー.オーダーID;
結果->
オーダーIDごとでまとまったようなのですが、なぜか会計が数字ではなく「会計」と言う表示となります。。
※さらに会計の部分が Expr1001 という表示になります。
この名前はカラム名が決まっていない時に出るようなのですが、なぜ決まっていないと判定されるかがわかりませんでした、、!
オーダーID Expr1001
1 会計(数字ではなく会計と言う文字。本来ここは数字であって欲しい)
2 会計
3 会計
原因がわからず、お力添えいただけますと幸いです。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/20 07:34