我正在尝试为网页创建一个简单的类似博客的新闻短片。为此,我有三个表:一个包含帖子,另一个包含类别,另一个将帖子与类别链接(称为“关系”)。
我已经能够管理大多数查询,但我仍然无法理解:类别 blogroll。主要问题是我想列出每个特定帖子中的所有关系,但是因为我正在按特定关系进行过滤,所以它当然只显示这个。
示例:表 1(POSTS):
POST_ID POST_TITLE POST_CONTENT
1 TEST TEST
2 TES2 TEST2
表 2(类别):
CAT_ID CAT_NAME
1 NEWS
2 PRODUCTS
表 3(关系):
REL_POST REL_CAT
1 1
1 2
2 2
所以,帖子 1 属于“新闻”和“产品”,如果我要求一个“产品”类别的博客,这应该是输出:
POST_ID POST_TITLE POST_CONTENT POST_CATEGORIES
1 TEST TEST 1:NEWS,2:PRODUCTS
2 TES2 TEST2 2:PRODUCTS
相反,POST_CATEGORIES 只列出 2:PRODUCTS,因为我过滤了 REL_CAT 的查询。
这是我设法制作的示例代码:
SELECT `post_id`, `post_title`, `post_content`, GROUP_CONCAT(CONCAT(rel_cat,':', cat_name)) AS post_categories
FROM `posts`
LEFT JOIN `relations` ON (`rel_post` = `post_id`)
LEFT JOIN `categories` ON (`cat_id` = `rel_cat`)
WHERE rel_cat = 2
有人可以指出我做错了什么吗?我曾尝试查阅手册并在网上搜索,但大多数结果将我指向有相反问题的人(他们想从连接表中过滤结果),并且 mysql 手册可以用混淆的 PERL 编写,因为我读过。
提前致谢。