我有三个表
餐 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/