2017-03-08 42 views
0

我有以下表格,我想要计算卡路里和价格的总和。使用来自加入表的值计算

蛋糕:

| 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是未知的,我可以理解,但我不知道如何解决它。但是,这仍然让我面临如何计算这些值的问题。

我希望有人能帮助我解决这个问题。

+0

你需要在你的'SELECT'声明在'WHERE'声明的字段。 – Stuart

+2

我猜你从未做过巧克力蛋糕。 – Strawberry

+0

我估计卖出价格应该是25.50,而不是15.50 – Magoo

回答

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; 
+0

不知道这是用'SUM() – SuperDJ