PHP MySQL Left加入更多字段

时间:2014-05-04 20:11:54

标签: mysql sql join left-join

我认为这是我今天的最后一个问题: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

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个字符,但它可以增加,这在手册中定义