gpt4 book ai didi

MySQL - GROUP_CONCAT 与联接,产生 1054 错误

转载 作者:行者123 更新时间:2023-11-29 19:16:08 26 4
gpt4 key购买 nike

我尝试根据 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com