我现在不清楚这个问题,但我有以下表格:
------------------------------
-- Recipe ----- Ingredients --
------------------------------
-- ID - ID --
-- Name - Name --
-- Cost - Cost --
-- Calories - Calories --
-- - RecipeName --
------------------------------
我创建了这个程序
DELIMITER !!!
CREATE PROCEDURE RecipeCost()
BEGIN
SELECT Ingredients.RecipeName,
MAX(( SELECT SUM(Ingredients.Cost)
FROM Ingredients
WHERE Recipe.Name = Ingredients.RecipeName)) AS Price
FROM Ingredients
JOIN Recette
WHERE Recette.Name= Ingredients.RecipeName;
END !!!
正确显示最高费用,但我无法显示与此费用相关的食谱名称。
你知道为什么吗?
答案 0 :(得分:0)
以下每种食谱的成本如下:
select i.recipename, sum(i.cost)
from ingredients i
group by i.recipename;
获得最高成本。 。
select i.recipename, sum(i.cost) as total_cost
from ingredients i
group by i.recipename
order by total_cost desc
limit 1;
不需要加入食谱表,因为名称在成分表中。
答案 1 :(得分:0)
我不了解p{border: 1px solid #000;}
footer{border: 2px solid green;}
的使用情况。 max
已使子查询产生单个值。也许这就是你想要的:
sum
答案 2 :(得分:0)
您需要按RecipeName分组并使用聚合SUM来获得所需的结果。为了获得最大和最小使用不同的顺序和联盟结果.. http://www.sqlfiddle.com/#!9/f3c470/6
(select i.RecipeName, sum(i.cost) cost
from ingredients i
group by i.RecipeName
order by cost desc
limit 1)
UNION
(select i.RecipeName, sum(i.cost) cost
from ingredients i
group by i.RecipeName
order by cost
limit 1);