mysql - 以一种棘手的方式连接 MySQL 表

标签 mysql select join

我有三个表

餐 table 上的人

id | name

表格文件

id | person_data | person_id

表格项目

id | item_name | file_id

每个人有多个文件,每个文件有多个项目。 有没有什么方法可以只使用 mysql 返回这样的内容来为每个人选择所有项目:

person - file_id -> item 1, file_id -> item 2, file_id -> item 3

我在考虑某种类型的 JOIN,我尝试了所有我能想到的组合,但我认为加入不是解决方案,或者...

最佳答案

使用GROUP_CONCAT。请检查SQLFiddle

SELECT
  b.id,b.name,
  GROUP_CONCAT(b.items SEPARATOR '|')
FROM (SELECT
        p.id,p.name,
        CONCAT(f.id,' -> ', GROUP_CONCAT(i.item_name)) AS items
      FROM persons p,
        files f,
        items i
      WHERE p.id = f.person_id
          AND f.id = i.file_id
      GROUP BY f.id) AS b
GROUP BY b.id

关于mysql - 以一种棘手的方式连接 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678259/

相关文章:

mysql - 即使主查询不返回任何行,如何获取子查询的结果?

mysql - 无法编译 MySQL++

MySql电影预约系统设计

javascript - jquery 将值复制到其他区域

mysql - 如何在sql select语句中为每个id选择最大值?

具有空值的多个字段的 SQL 联接

php - 获取登录用户的 ID 以显示类别

mysql - 如何根据特定列值仅选择最后一个条目,保持当前表顺序

javascript - 根据Javascript中的indexOf位置拆分数组并组合成单独的数组

hadoop - 在Hive中的许多表上执行有效的联接