mysql - 通过映射表一对多连接查询

标签 mysql sql join

这可能是一件非常基本的事情,但我无法完全让它发挥作用,而且我找不到一个完全可以实现我正在寻找的功能的示例。假设我有三张表:

animals: id, name, description
foods: id, name, description
animals_foods: animal_id, food_id

所以我是一名新动物园管理员,我想看看所有动物都会吃什么类型的食物。我想看到这样的输出:

+--------+------------------------+
| animal |         foods          |
+--------+------------------------+
| lion   | beef,chicken,lamb      |
| hippo  | apples,hay,lettuce     |
| monkey | apples,bananas.carrots |
+--------+------------------------+

最佳答案

将表格连接在一起并按动物分组。 group_concat 可以为每个组组合一个列表

select a.name as animal_name, group_concat(f.name) as foods
from animals a
left join animal_foods af on af.animal_id = a.id
left join foods f on af.food_id = f.id
group by a.name

关于mysql - 通过映射表一对多连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851440/

相关文章:

mysql - SQL - 我应该使用联接吗?

php - 使用参数从 mysqli_query 输出中获取单行,没有循环

sql - 在 SQL Server 插入查询中使用 IF - ELSE

mysql - 需要帮助.... 选择不在日期之间的位置

MySql 统计失败代码的出现次数

mysql - 复杂的动态 SQL 查询,自行加入

连接表上的 MySQL 索引

sql - data.table 连接的时间

php - 如何使用条件 PHP 在单击时运行 SQL 查询?

sql - 有没有办法用十六进制表示 Postgres 文字 int?