嗨,我的查询在不应该合并记录时遇到问题。
我有两个表作者和出版物,它们通过出版物 ID 以多对多关系相关。因为每个作者可以有很多出版物,每个出版物都有很多作者。我希望我的查询返回一组作者的每篇出版物,并包括对分组到一个字段中的出版物做出贡献的每个其他作者的 ID。(我正在使用 mySQL)
我试图在下面以图形方式描绘它
Table: authors Table:publications
AuthorID | PublicationID PublicationID | PublicationName
1 | 123 123 | A
1 | 456 456 | B
2 | 123 789 | C
2 | 789
3 | 123
3 | 456
我希望我的结果集如下
AuthorID | PublicationID | PublicationName | AllAuthors
1 | 123 | A | 1,2,3
1 | 456 | B | 1,3
2 | 123 | A | 1,2,3
2 | 789 | C | 2
3 | 123 | A | 1,2,3
3 | 456 | B | 1,3
这是我的查询
Select Author1.AuthorID,
Publications.PublicationID,
Publications.PubName,
GROUP_CONCAT(TRIM(Author2.AuthorID)ORDER BY Author2.AuthorID ASC)AS 'AuthorsAll'
FROM Authors AS Author1
LEFT JOIN Authors AS Author2
ON Author1.PublicationID = Author2.PublicationID
INNER JOIN Publications
ON Author1.PublicationID = Publications.PublicationID
WHERE Author1.AuthorID ="1" OR Author1.AuthorID ="2" OR Author1.AuthorID ="3"
GROUP BY Author2.PublicationID
但它返回以下内容
AuthorID | PublicationID | PublicationName | AllAuthors
1 | 123 | A | 1,1,1,2,2,2,3,3,3
1 | 456 | B | 1,1,3,3
2 | 789 | C | 2
当 where 语句中只有一个 AuhorID 时,它确实提供了所需的输出。我一直无法弄清楚,有谁知道我哪里出错了?