Table Pizza:
id name cost ingredients
1 Vegie Pizza 12,59 1,2
Table Ingredients
id name
1 cheese
2 broccoli
3 pepperoni
我想获得egzample名称和成分:
Vegie Piza - cheese, broccoli - 12,59
或者可以用意大利辣香肠订购Vegie Pizza。
如何以我描述的方式连接这两个表?
答案 0 :(得分:1)
你应该有一张桌子PizzaIngredients
,每张披萨和每张配料一行。有人,一个人无法控制正在使用的数据结构。如果是这样,MySQL中有一个解决方案:
select p.name, p.cost, group_concat(i.name)
from pizza p join
ingredients i
on find_in_set(i.id, p.ingredients) > 0
group by p.name, p.cost;
但是,结点/关联表是将这些数据存储在关系数据库中的更好方法。
答案 1 :(得分:1)
首先以逗号分隔值的方式存储关系,而不是使用联结表来关联2个实体,请参阅Database Normalization
对于您当前的解决方案,您需要在加入条件
中使用find_in_set
select p.id,group_concat(i.name) ingredients,p.cost
from
Pizza p
join Ingredients i on(find_in_set(i.id,p.ingredients) > 0)
group by p.id
Fiddle Demo