Привет, у меня проблемы с объединением записей в моем запросе, когда этого не должно быть.
У меня есть две таблицы «Авторы» и «Публикации», они связаны идентификатором публикации во многих отношениях. Поскольку у каждого автора может быть много публикаций, и у каждой публикации есть много Авторов. Я хочу, чтобы мой запрос возвращал каждую публикацию для ряда авторов и включал в себя идентификатор каждого из других авторов, внесших вклад в публикацию, сгруппированных в одно поле. (Я работаю с 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.
Я не смог понять это, кто-нибудь знает, где я иду не так?