MySql查询,合并数据表

4
我有两个MySQL表,一个包含食物,另一个包含食谱(一组食物)。食谱表有一个标题,然后有一个包含该食谱中所有食物的项目表。该表链接到食品表。现在我需要将这些表合并并一起列出。
食品表:
foodid | title | calories 1 banana 100 2 apple 50
食谱表:
recipeid | title 1 fruit-mix
食谱项目表:
receipeitemid | recipeid | foodid 1 1 1 2 1 2
我需要将它们合并为一个列表,其中包含相同列表中的食品和食谱。因此,在上面的示例中,我需要像这样的列表:
title | foodid | recipeid | calories banana 1 null 100 apple 2 null 50 fruit-mix null 1 150
这种合并是否有可能?

你是否有特别的原因想要同时列出两者? - Powerlord
2个回答

6

你使用一个叫做UNION的东西。

使用UNION的问题在于所有表必须具有相同的字段。但是,您可以在SELECT查询中添加虚拟字段以获得所需的结果。并且对于大型表格,它可能会变得缓慢。

SELECT title, foodid, NULL as recipeid, calories FROM Food-table
UNION
SELECT title, NULL as foodid, recipeid, calories FROM Recipe-table

但是你应该真正了解连接,因为你有一个链接表。


4
SELECT title, foodid, null, calories
FROM Food

UNION

SELECT r.title, null, r.recipeid, sum(calories)
FROM recipe r
INNER JOIN RecipeItem ri ON ri.recipeid=r.recipeid
INNER JOIN Food f ON f.foodid=ri.foodid
GROUP BY r.title, r.recipeid

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