【发布时间】:2016-10-18 18:49:18
【问题描述】:
我有两个表:一个,主表显示星期几和当天的汤。 餐桌汤,有一个可能的汤的列表。
+-----+------------+--------+
| id | day |id_soup |
+-----+------------+--------+
| 1 | Friday | 1 |
| 2 | Saturday | 1 |
| 3 | Sunday | 2 |
+-----+------------+--------+
+-----+------------+
| id | soup |
+-----+------------+
| 1 | potatoes |
| 2 | carrots |
| 3 | peas |
+-----+------------+
要获得星期五汤(字符串不是 id),我可以使用这样的查询:
SELECT ma.id, ma.day, ma.id_soup, so.soup
FROM main ma, soup so
WHERE ma.id_soup = so.id
AND ma.id = 1
我得到这样的东西(输出)
+-----+------------+---------+----------+
| id | day | id_soup | soup |
+-----+------------+---------+----------+
| 1 | Friday | 1 | potatoes |
+-----+------------+---------+----------+
如果星期五只有一汤,这很有效。
问题是周五将提供两种汤(土豆和豌豆 - 一系列汤)
我们需要另一张桌子吗?
已编辑
+-----+---------+---------+
| id | id_day | id_soup |
+-----+---------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
| 4 | 2 | 3 |
| 5 | 3 | 1 |
| 6 | 3 | 3 |
+-----+---------+---------+
有可能在一次查询中,除了主表的其他字段(id、day、id_soup)之外,还可以获得soups数组(potatoes、peas)?
构建此查询的最佳方法是什么?
已编辑:
期望的输出(仅用于说明):
+-----+------------+---------+------------------+
| id | day | id_soup | soup |
+-----+------------+---------+------------------+
| 1 | Friday | 1 | potatoes, peas |
+-----+------------+---------+------------------+
已编辑
问题:如果想要的输出是这样的:
+-----+------------+-------------------+
| id | day | soup |
+-----+------------+---------+---------+
| 1 | Friday | potatoes, carrots |
+-----+------------+---------+---------+
| 2 | Saturday | carrots, peas |
+-----+------------+---------+---------+
| 3 | Sunday | potatoes, peas |
+-----+------------+---------+---------+
【问题讨论】:
-
你想要的输出是什么...
-
您应该尝试将您的数据与提供的示例相匹配。在这种情况下,星期五应该吃土豆和豌豆。还请标记您的第三张桌子。如果你有第三张桌子,那么你不需要
MAINtbale 上的汤 ID -
谢谢 Teja。我编辑了我的小提琴。
-
为什么需要数组?为什么 id_soup 也没有数组?
-
谢谢胡安。这个例子是虚构的。在客户端显示的是当天(星期五)和当天的汤列表(土豆、豌豆)