2014-10-17 105 views
0

假设我有一个表days,它使用的ID指向包含食物名称的表food,它指定每天的早餐食物和晚餐食物。如何使用单个查询获取早餐和晚餐食物名称?基本上我想下面结合成一个查询:如何在MySQL中将多行数据放入一个行数组中

SELECT days.*, food.name AS breakfast_name FROM days, food WHERE days.breakfast_id = food.id AND days.id = '12' 
SELECT days.*, food.name AS dinner_name FROM days, food WHERE days.dinner_id = food.id AND days.id = '12' 
+0

一个适当规范化的数据结构将使这容易很多。那就是你在'days'和'food'之间有一对多的连接表,并且可以使用某种'type'列来进行分组。您违反了[Zero,One或Infinity规则](http://en.wikipedia.org/wiki/Zero_one_infinity_rule),因为有* two *连接列。 – tadman 2014-10-17 21:16:51

+0

你可以给两个表的结构和数据样本吗?这可能有助于更好地了解您的需求。另外,您希望在组合查询中有多少列?我假设你不只是想做一个简单的联合。 – Jerome 2014-10-17 21:19:27

回答

1

您可以通过在不同的IDS加入食台上两次做它在一个单一的查询。

SELECT days.*, bf.name AS breakfast_name, df.name AS dinner_name FROM days JOIN food AS bf ON days.breakfast_id=bf.id JOIN food AS df ON days.dinner_id=df.id; 
+0

非常好!那正是我所期待的。 – 2014-10-17 23:34:08

相关问题