嗨,这是我的数据库结构和数据,我想得到以下输出,如下图所示。
我在表格中有一个部分,其中食物类型允许多个值,所以我创建了2个表,1个表用于值( dd_foods ),还有1个用于部分ID( restaurant_food )。现在我想从 restaurant_food.foodtype 中选择那些多行id值,但是从 dd_foods 中选择名称。我该怎么做?
我不知道如何在这里解释,所以如果它让人感到困惑,我会抱歉。
答案 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
)