使用连接表中的值计算

时间:2017-03-08 17:43:26

标签: mysql sql

我有以下表格,我想计算卡路里和价格的总和。

蛋糕:

| id | cake      | description |
|  1 | chocolate |             |

配方:

| 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 |

因此预期结果为calories => 500buy_price => 22.72sell_price => 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`.`ingredients_id未知的错误,我可以理解,但我不知道如何解决它。但这仍然让我想到如何计算价值。

我希望有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下查询:

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;