mysql - 如何在一行中包含多行引用?

标签 mysql sql row

我有餐 table 披萨。它包括成本、ID、(披萨的)名称和成分等字段。 我还有表格成分,带有成分名称和 ID。如何放入餐 table 披萨配料(例如 1、2、4、15),并能够从餐 table 配料中获取该配料名称?

Table Pizza:
id   name          cost    ingredients
1    Vegie Pizza   12,59   1,2

Table Ingredients
id   name
1    cheese
2    broccoli
3    pepperoni

我想获取示例名称和成分:

Vegie Piza - cheese, broccoli - 12,59

或者可以订购带有意大利辣香肠的素食披萨。

如何按照我描述的方式连接这两个表?

最佳答案

首先,不要将关系存储为逗号分隔值,而是使用联结表来关联 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

关于mysql - 如何在一行中包含多行引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349052/

相关文章:

mysql - 为 SQL 查询选择最佳索引

ios - 如何删除一个部分中的一行?

php - Laravel 日期未插入,更新数据库表

php - 检查数据库表字段(日期时间)是否为空

sql - 将 SQL 消息输出到日志文件

php - 连接到 MySql DB (PHP) 时遇到问题

php - Symfony2 中的 ManyToOne、oneToMany 关联的结果不起作用

android - 在 ListView 上回收位图会导致问题

php - 按日期从 MySQL 中的另一行中减去行

mysql存储过程不写入预期数据