我认为这是我今天的最后一个问题:D
我有桌子餐厅,食物和帮手桌子,只有两张桌子的ID。如果我现在这样做:
SELECT * FROM restaurants
LEFT JOIN ResFoodHelper ON restaurants.id = ResFoodHelper.resId
输出现在是带有foodId的餐馆。但是,如果他为餐厅找到了超过1种食物,那么我会找到每种食物,这些食物可以在同一家餐厅获得额外的食物。
现在它是这样的:
如果有1个条目:
Restaurant 1 - FoodId 1
Restaurant 2 - FoodId 1
Restaurant 3 - FoodId 2
但如果发现超过1个:
Restaurant 1 - FoodId 1
Restaurant 1 - FoodId 2
Restaurant 1 - FoodId 3
Restaurant 2 - FoodId 1
Restaurant 2 - FoodId 2
...
但我想要这样的事情:
Restaurant 1 - FoodId 1, FoodId 2, FoodId 3
Restaurant 2 - FoodId 1, FoodId 2
答案 0 :(得分:1)
Haven未经过测试,但尝试过这样的事情:
SELECT restaurants.id, GROUP_CONCAT(ResFoodHelper.id)
FROM restaurants
LEFT JOIN ResFoodHelper ON restaurants.id = ResFoodHelper.resId
GROUP BY restaurants.id
答案 1 :(得分:0)
你也需要加入你的食物表,然后你可以使用GROUP_CONCAT,它会给你每个餐馆的逗号分隔食物清单,也不确定列名,所以我只是把它们作为例子制作确保在查询中使用正确的列
SELECT r.name,
GROUP_CONCAT(f.name) `foods`
FROM restaurants r
LEFT JOIN ResFoodHelper rsf ON r.id = rsf.resId
LEFT JOIN food f ON f.id = rsf.food_id
GROUP BY r.id
要知道这个事实,它的默认限制为1024个字符,但它可以增加,这在手册中定义