如何从行中选择多个值并将其作为单个列值连接

时间:2015-10-17 17:30:48

标签: php mysql sql

嗨,这是我的数据库结构和数据,我想得到以下输出,如下图所示。

我在表格中有一个部分,其中食物类型允许多个值,所以我创建了2个表,1个表用于值( dd_foods ),还有1个用于部分ID( restaurant_food )。现在我想从 restaurant_food.foodtype 中选择那些多行id值,但是从 dd_foods 中选择名称。我该怎么做?

database structure

我不知道如何在这里解释,所以如果它让人感到困惑,我会抱歉。

3 个答案:

答案 0 :(得分:2)

您可以使用GROUP_CONCAT功能。

SELECT r.id, r.name, GROUP_CONCAT(dd.foodtypes)
FROM restaurants r 
INNER JOIN restaurants_food rf on rf.restaurants_id = r.id 
INNER JOIN dd_foods dd on dd.id = rf.food_id
GROUP BY r.id, r.name

答案 1 :(得分:1)

只需使用类似......

SELECT r.*
     , f.* 
  FROM restaurants r 
  JOIN restaurant_foodtype rf 
    ON rf.restaurant_id = r.restaurant_id 
  JOIN foodtypes f 
    ON f.foodtype_id = rf.foodtype_id;

...并处理应用程序级代码中的所有其他内容

答案 2 :(得分:0)

select id, concat(restaurant, "-", foodtype) as restaurant_info
from(
select r.id as id, CONCAT(r.id, "-" ,r.name, "-") as restaurant, group_concat(ddf.foodtypes  separator ',') as foodtype
from restaurants as r
inner join restaurant_food as rf on rf.restaurants_id = r.id
inner join dd_foods as ddf on ddf.id = rf.food_id
)