我想创建一个BLOG并创建两个表。
ID Name of Category
我创建了文章表。
ID CATEGORY_ID ARTICLE
我将每篇文章添加到多个类别中,并将ID作为逗号分隔值保存在CATEGORY_ID字段中。即。
ID CATEGORY_ID Article
1 1,2,3 xyz
2 1,5 ghjy..............
3 2,4,6 hgyr..............
现在我希望在类别页面上发布这些文章。
$QUERY = "SELECT * FROM article_table WHERE category_id like '%category_id%' ORDER BY id DESC";
在上面的查询中一切都很好,直到有两个相同的类别。 所有类别为20,21,22,23等的文章也出现在2的类别页面上。我该如何避免这种情况。 '% - %'导致问题。
我的问题:我希望动态地在不同的页面上显示不同类别的文章。
任何人都可以帮忙???
答案 0 :(得分:0)
如果您使用的是MySQL,可以使用FIND_IN_SET函数查看您希望找到的类别是否存在
尝试:
SELECT * FROM article_table WHERE FIND_IN_SET('searchForId', category_id) > 0 ORDER BY id DESC;
其中'searchForId'替换为您正在寻找的类别ID
答案 1 :(得分:0)
我建议您对表格进行规范化。你真正拥有的是一对多的关系,塞满了一张桌子。您的文章表可以简化为id和内容
ID Article
1 xyz
2 ghjy..............
3 hgyr..............
然后创建第二个表来保存类别
ARTICLE_ID CATEGORY_ID
1 1
1 2
1 3
2 1
2 5
3 2
3 4
3 6
假设您将第二个表命名为article_category_map,则查询将为:
SELECT a.ID, acm.CATEGORY_ID, acm.Article
FROM article_category_map acm
inner join article_table a on acm.ARTICLE_ID = a.ID
WHERE acm.CATEGORY_ID = %category_id%
ORDER BY a.id DESC