私は PHP/MySQL ベースの「ブログ投稿」システムに取り組んでいます。投稿には複数のカテゴリを含めることができ、2 つのテーブルがあります。
投稿:
PostId Content
0 POST0
1 POST1
2 POST2
3 POST3
post_categories:
PostId CategoryId
0 1
0 2
0 3
1 2
1 4
2 3
3 1
(一部の列を省略しました)
カテゴリを説明する 3 番目のテーブル「カテゴリ」もありますが、これは関係ありません。
CategoryId (例: 2) を指定して、その CategoryId を含むすべての投稿を次のフォームで返したい:
PostId Contents CategoriesIds
0 POST0 1, 2, 3
1 POST1 2, 4
(投稿 0 と投稿 1 の両方を返す必要があります。どちらも CategoryId 2 を持っています)
問題は、このクエリを使用することです:
SELECT p.PostId, p.Content, GROUP_CONCAT(pc.CategoryId SEPARATOR ',') AS CategoriesIds
FROM posts AS p
LEFT JOIN post_categories AS pc ON p.PostId=pc.PostId
WHERE pc.CategoryId = 2 GROUP BY p.PostId
両方の投稿が返されますが、すべてのカテゴリ ID ではありません。
PostId Content CategoriesIds
0 POST0 2
1 POST1 2
CategoryId 2 のすべての投稿を返したいのですが、それらの投稿のすべての CategoriesId を返します。
そうすることは可能ですか?
ありがとう