カラムの合計値を出す際に、明らかに値が大きくなってしまいます。
わかる方がいらっしゃれば、ご教授いただけると幸いです。
よろしくお願いいたします。
テーブル情報
受注テーブル(orders)
|id|pay_date|product_id|quantity
|:--|:--:|--:|
|1|2021-04-01|1|1000
|2|2021-04-01|2|1000
|3|2021-04-02|3|1000
日報テーブル(works)
id | order_id | work_time |
---|---|---|
1 | 1 | 1 |
2 | 1 | 1 |
3 | 1 | 1 |
4 | 2 | 1 |
5 | 2 | 1 |
6 | 3 | 1 |
7 | 3 | 1 |
製品テーブル(products)
|id|customer_id|name|unitprice
|:--|:--:|--:|
|1|1|製品A|1.0
|2|1|製品B|2.0
|3|2|製品C|3.0
得たいデータ(正解)
|pay_date|customer_id|sum_billing_amount|sum_work_time
|:--|:--:|--:|
|2021-04-01|1|3000|5
|2021-04-02|1|3000|2
sum_work_time = 作業時間(work_time)の合計
sum_billing_amount = 請求金額(quantity × unitprice)の合計
上手くいかなかったSQL(不正解)
mysql
1SELECT 2`pay_date`, 3`customer_id`, 4SUM(`quantity`*`unitprice`) as `sum_billing_amount`, 5SUM(`work_time`) as `sum_work_time` 6FROM `orders` 7LEFT JOIN `products` ON `orders`.`product_id` = `products`.`id` 8LEFT JOIN `works` ON `works`.`order_id` = `orders`.`id` 9GROUP BY `pay_date`,`customer_id`
上手くいかなかったSQLの結果(不正解)
請求金額の合計(sum_billing_amount)が異常値です。
|pay_date|customer_id|sum_billing_amount|sum_work_time
|:--|:--:|--:|
|2021-04-01|1|7000|5
|2021-04-02|1|6000|2
予想
おそらく、日報テーブル(works)をLEFT JOINした際、内部で日報1レコードずつに請求金額(billing_amount)がつき、これを合算してしまっているのだと思いますが、これをどのように解決するのか方法が分かりません。
work_id | order_id | work_time | billing_amount |
---|---|---|---|
1 | 1 | 1 | 1000 |
2 | 1 | 1 | 1000 |
3 | 1 | 1 | 1000 |
4 | 2 | 1 | 2000 |
5 | 2 | 1 | 2000 |
6 | 3 | 1 | 3000 |
7 | 3 | 1 | 3000 |
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/20 00:09