【发布时间】:2014-04-25 06:48:58
【问题描述】:
我正在开发一个使用类别和子类别的文章系统。
基本上,如果类别具有 parent_id 值,则它是该类别的子类别。
我希望能够从一个类别中获取最新文章以及从其子类别中获取文章。
例如:我有一个名为“游戏文章”的类别,以及名为 Xbox、PlayStation、Nintendo 和 PC 的几个子类别。我的系统可以在父类别(例如游戏文章)和子类别中发布文章。
因此,这必须包括属于父类别或该父类别的子类别的文章。
CREATE TABLE IF NOT EXISTS `articles` (
`article_id` int(15) NOT NULL AUTO_INCREMENT,
`author_id` int(15) NOT NULL,
`category_id` int(15) NOT NULL,
`modification_id` int(15) NOT NULL,
`title` varchar(125) NOT NULL,
`content` text NOT NULL,
`date_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`status` tinyint(1) NOT NULL,
`attachment_id` int(15) NOT NULL,
PRIMARY KEY (`article_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `article_categories` (
`category_id` int(15) NOT NULL AUTO_INCREMENT,
`parent_id` int(15) NOT NULL,
`title` varchar(50) NOT NULL,
`description` text NOT NULL,
`attachment_id` text NOT NULL,
`enable_comments` tinyint(1) NOT NULL,
`enable_ratings` tinyint(1) NOT NULL,
PRIMARY KEY (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
到目前为止我的查询...
SELECT article_id, category_id
FROM articles
WHERE category_id = 1
ORDER BY article_id DESC
LIMIT 10
当然,这只会获取该类别下的文章,而不是来自该类别和该类别的子类别。
【问题讨论】:
-
你能不能给一个你想要的图形示例?,其实我不明白你想要什么......
-
你的分类和子分类是否存储在同一张表中?
-
是的,'article_categories' 中没有 parent_id 为 0 的任何行都被视为子类别或子类别。我想获取具有特定类别 ID 的文章以及该类别子类别中的文章。
-
类别可以生成多少代?我的意思是,假设您有一个子类别。这个孩子可以有一个父母,而父母本身就是另一个类别的孩子吗?
-
类别是否有最大深度——即子类别本身可以是其他类别的父类别吗?如果有,最大深度是多少?如果没有,是否有可接受的合理限制?