我尝试根据 this previous answer 的结果进行处理,但似乎没有任何作用。我有一个几乎相同的设置,只是文件类型不同。
文件表文件
id file_name
1 1e462cef-1c2c-4ddf-8b48-0b3002e2101d.nzb
2 303dc268-bf55-49e5-9901-cfbb99b09a69.nzb
3 1297993d-784b-4996-b3b9-9048b068652b.nzb
4 a2cebf3a-b3b1-498e-ad4c-100774ff4b9d.nzb
标签表标签
id tag_name
1 no.mirrors
2 at.least.one.mirror
3 multiple.mirrors
4 no.mirrors
5 original.deleted
文件-标签关系表files__tags
file_id (FK to files.id) tag_id (FK to tags.id)
1 1
1 5
2 1
3 3
3 5
4 4
所以我希望得到一些输出,例如:
file_id file_name tags
1 1e462cef-1c2c-4ddf-8b48-0b3002e2101d.nzb 1,5
2 303dc268-bf55-49e5-9901-cfbb99b09a69.nzb 1
3 1297993d-784b-4996-b3b9-9048b068652b.nzb 3,5
4 a2cebf3a-b3b1-498e-ad4c-100774ff4b9d.nzb 4
我尝试根据上一个问题的答案重新创建我的查询,如下所示:
SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags
FROM files
LEFT OUTER JOIN tags ON files__tags.file_id = files.id
GROUP BY files.file_name;
我尝试了其他一些事情,该问题的答案引用了 tag.photo
,该问题在提出问题的人提供的简化表结构中不存在,我认为这是一个拼写错误用于与照片和标签相关的表格。
无论如何,我收到的错误是:
SQL query:
SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags
FROM files
LEFT OUTER JOIN tags ON files__tags.file_id = files.id
GROUP BY files.file_name LIMIT 0, 25
MySQL said:
#1054 - Unknown column 'files__tags.tag_id' in 'field list'
以上所有列都存在。
非常感谢您的任何想法!
编辑:我尝试了两个建议(将关系数据库添加到FROM
并转义表/列名称)
SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags
FROM files,files__tags
LEFT OUTER JOIN tags ON `files__tags`.`file_id` = `files`.`id`
GROUP BY files.file_name;
我还单独尝试了这些方法,并转义了整个语句中的所有表/列名称。
通过转义我得到:
#1054 - Unknown column 'files__tags.tag_id' in 'field list'
使用 FROM
中命名的 files__tags
表,我得到:
#1054 - Unknown column 'files.id' in 'on clause'
EDIT2:好的,非常感谢您的解决方案
SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags
FROM files
LEFT JOIN files__tags ON files__tags.file_id =files.id
LEFT OUTER JOIN tags ON tags.id=files__tags.tag_id
GROUP BY files.file_name LIMIT 0, 25
最佳答案
SELECT files.file_name, GROUP_CONCAT(files__tags.tag_id) AS associated_tags
FROM files
LEFT JOIN files__tags ON files__tags.file_id =files.id
LEFT OUTER JOIN tags ON tags.id=files__tags.tag_id
GROUP BY files.file_name LIMIT 0, 25
尝试上面的代码,希望这会有所帮助
关于MySQL - GROUP_CONCAT 与联接,产生 1054 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42693732/