我正在研究基于 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
(我省略了一些列)
我还有一个第三个表“类别”,它描述了类别,但这不相关。
给出一个 CategoryId(例如:2),我想返回包含该 CategoryId 的所有帖子,格式如下:
PostId Contents CategoriesIds
0 POST0 1, 2, 3
1 POST1 2, 4
(post 0 和 post 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。
有可能这样做吗?
谢谢