在两个MySQL表中对两列求和

13

我已经到处搜索了这个问题,但是还没有答案。我都快生气了,请帮忙。

如何对两个表中的两列进行求和并按userid分组?

有两个表。

Recipe Table
recipeid   userid   recipe_num_views

Meals Table
mealsid   userid    meal_num_views 

目标是将两个表格中的 num views 相加并按 userid 进行分组。

so for example
Recipe Table
1    3     4
2    4     6

Meal Table
1    3     2
2    4     5


select sum(recipe views)+sum(meal views) 
WHERE recipe.userid=meals.userid GROUP BY userid

应该给出

userid=3 , sum=6
userid=4, sum=11

这会得到一个更大的数字。


1
没有实际成果,那就糟糕了。 - Johan
2个回答

14
SELECT recipe.userid, sum(recipe_num_views+meal_num_views) 
FROM Recipe JOIN Meals ON recipe.userid=meals.userid
GROUP BY recipe.userid

编辑:

根据您的评论,我了解到当您拥有用户34个食谱3餐点时,您将得到所有这些行的组合总和 => sum(recipes)*3 + sum(meals)*4

请尝试使用此查询:

select r.userid, (sum_recipe + sum_meal) sum_all
FROM
(select userid, sum(recipe_num_views) sum_recipe
FROM Recipe
GROUP BY userid) r
JOIN (
select userid, sum(meal_num_views) sum_meal
FROM Meals
GROUP BY userid) m ON r.userid = m.userid

例如6百万而不是10万。 - user813801
好的,这是代码:SELECT sum(num_views) FROM recipes WHERE userid=3,结果为99316。但是,当代码改为:SELECT sum(recipes.num_views) FROM recipes,meals WHERE recipes.userid=3 AND recipes.userid=meals.userid,则结果为2979480。 - user813801
也尝试了这个:SELECT sum(recipes.num_views) FROM recipes JOIN meals on recipes.userid=meals.userid WHERE recipes.userid=3 GROUP BY recipes.userid,这也给出了2979480。 - user813801
@user813801,我认为你应该检查一下你的数据库(查看没有group by和sum的结果集),因为两个答案中的查询都是正确的,应该返回正确的总和。 - rMX
非常感谢你,Manji。我会尝试一下的。看起来我在这个看似简单的问题上开了个潘多拉盒子。 - user813801
显示剩余4条评论

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接