Mysql 使用联接表中的值进行计算
我有以下表格,我想计算总热量和价格 蛋糕: 配方:Mysql 使用联接表中的值进行计算,mysql,sql,Mysql,Sql,我有以下表格,我想计算总热量和价格 蛋糕: 配方: | id | cake_id | ingredient_id | | 1 | 1 | 1 | | 2 | 1 | 2 | 成分: | id | ingredient | calories | buy_price | sell_price | | 1 | Chocolate | 200 | 12.22 | 14.00 | | 2 | S
| id | cake_id | ingredient_id |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
成分:
| id | ingredient | calories | buy_price | sell_price |
| 1 | Chocolate | 200 | 12.22 | 14.00 |
| 2 | Sugar | 300 | 10.50 | 11.50 |
因此,预期结果将是卡路里=>500
,买入价=>22.72
和卖出价=>15.50
我已经尝试了以下查询,但没有成功
SELECT `c`.`id`, `cake`, `description`
FROM `cakes` `c`
JOIN `recipes` `r`
ON `c`.`id` = `r`.`cakes_id`
CROSS JOIN (
SELECT `calories`, `buy_price`, `sell_price`
FROM `ingredients` `i`
WHERE `i`.`id` = `r`.`ingredients_id`
) `ingredients`
它给了我一个错误,r`.`components\u id
未知,我可以理解,但我不知道如何修复它。但这仍然给我留下了如何计算这些值的问题
我希望有人能帮我解决这个问题。你能试试下面的问题吗:
SELECT c.id, SUM(i.calories), SUM(i.buy_price), SUM(i.sell_price)
FROM cake c
JOIN recipe r ON c.id = r.cake_id
JOIN ingredients i ON r.ingredient_id = i.id
GROUP BY c.id;
您可以尝试以下查询:
SELECT c.id, SUM(i.calories), SUM(i.buy_price), SUM(i.sell_price)
FROM cake c
JOIN recipe r ON c.id = r.cake_id
JOIN ingredients i ON r.ingredient_id = i.id
GROUP BY c.id;
您需要将
WHERE
语句中的字段包括在SELECT
语句中。我猜您从未做过巧克力蛋糕。我估计售价应该是25.50,不是15.50你需要在SELECT
语句中包含WHERE
语句中的字段。我猜你从来没有做过巧克力蛋糕。我估计售价应该是25.50,而不是15.50。我不知道SUM()这么容易。
不知道SUM()这么容易。