我有两张桌子:
餐厅
+---------------+----------------+
| restaurant_id | Restaurant name|
+---------------+----------------+
| 1 | KFC |
| 2 | McD |
+----+---------------------------+
菜
+---------------+---------------+----------------+
| cuisine_id | restaurant_id | cuisine |
+---------------+---------------+----------------+
| 1 | 1 | Fastfood |
| 2 | 1 | Fried Chicken |
| 3 | 2 | Fastfood |
| 4 | 2 | Burger |
+---------------+---------------+----------------+
是否可以获得这样的数据=
+---------------+----------------+------------------------+
| restaurant_id | Restaurant name| Cuisine |
+---------------+----------------+------------------------+
| 1 | KFC |Fastfood, Fried Chicken |
| 2 | McD |Fastfood, Burger |
+----+---------------------------+------------------------+
只有一个查询? 或者我应该通过php(选择餐厅第一个> foreach循环>选择菜系ID>解析成新数组)。
答案 0 :(得分:8)
您可以使用GROUP_CONCAT
:
SELECT r.restaurant_id, r.Restaurant_name,
GROUP_CONCAT(c.cuisine ORDER BY c.cuisine)
FROM Restaurant AS r
LEFT JOIN Cuisine AS c ON r.restaurant_id = c.restaurant_id
GROUP BY r.restaurant_id, r.Restaurant_name
注意: ORDER BY
中的GROUP_CONCAT
条款仅在您需要有序逗号分隔的cuisine
名称列表时才有必要
答案 1 :(得分:0)
您可以使用GROUP_CONCAT:
SELECT c.restaurant_id,r.restaurant_name, GROUP_CONCAT(c.cuisine)
FROM Restaurant r
INNER JOIN Cuisine c ON c.restaurant_id = r.restaurant_id
GROUP BY c.restaurant_id
答案 2 :(得分:0)
SELECT Restaurant.restaurant_id, Restaurant.Restaurant_name, GROUP_CONCAT(Cuisine.cuisine)
FROM Restaurant
LEFT JOIN Cuisine ON Restaurant.restaurant_id = Cuisine.restaurant_id
GROUP BY Restaurant.restaurant_id, Restaurant.Restaurant_name