こんにちは私は、レコードを結合するべきではないときにクエリを結合するのに問題があります。
著者と出版物の2つのテーブルがあり、それらは多対多の関係で出版物IDによって関連付けられています。各著者は多くの出版物を持つことができ、各出版物には多くの著者がいます。クエリで一連の著者のすべての出版物を返し、1つのフィールドにグループ化された出版物に貢献した他の各著者の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が1つしかない場合は、目的の出力を提供します。私はそれを理解することができませんでした、誰かが私がどこで間違っているのか知っていますか?