0

我想创建一个 BLOG 并创建两个表。

ID     Name of Category

我创建文章表。

ID    CATEGORY_ID    ARTICLE

我将每篇文章添加到多个类别中,并将 ID 保存为 CATEGORY_ID 字段中的逗号分隔值。IE

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的类别页面上。如何避免这种情况。'%--%' 导致了问题。

我的问题:我希望在不同的页面上动态显示不同类别的文章。

谁能帮忙???

4

2 回答 2

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
于 2013-07-31T22:19:01.520 回答
0

如果您使用的是 MySQL,您可以使用 FIND_IN_SET 函数来查看您希望查找的类别是否存在

尝试:

SELECT * FROM article_table WHERE FIND_IN_SET('searchForId', category_id) > 0 ORDER BY id DESC;

其中“searchForId”替换为您要查找的类别 ID

于 2013-07-31T19:41:51.057 回答