Я разрабатываю систему статей, в которой используются категории и дочерние категории.
В принципе, если категория имеет значение parent_id
, это дочерний элемент этой категории.
Я хотел бы иметь возможность получать последние статьи из категории и статей из своих дочерних категорий.
Например: у меня есть категория под названием "Игровые статьи" и несколько дочерних категорий под названием Xbox, PlayStation, Nintendo и ПК. Моя система позволяет размещать статьи в родительских категориях, таких как игровые статьи, а также в дочерних категориях.
Таким образом, это должно включать статьи, которые находятся либо в родительской категории, либо в дочерних категориях этого родителя.
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
Конечно, это получает только статьи под этой категорией, а не как дочерние категории категории, так и категории.