1
这里是我的发言:如何检索没有这些孩子的儿童类别?
SELECT (
COUNT(parent.categoryName) - (sub_tree.depth +1)) AS depth,
CONCAT(REPEAT('', (COUNT(parent.categoryName) - (sub_tree.depth +1))) , node.categoryName) AS categoryName
FROM
Categories AS node,
Categories AS parent,
Categories AS sub_parent,
(
SELECT node.categoryName, (
COUNT(parent.categoryName) -1) AS depth
FROM
Categories AS node,
Categories AS parent
WHERE
node.categoryLft BETWEEN parent.categoryLft AND parent.categoryRgt
AND node.categoryName LIKE 'Product'
GROUP BY node.categoryName
ORDER BY node.categoryLft
) AS sub_tree
WHERE
node.categoryLft BETWEEN parent.categoryLft AND parent.categoryRgt
AND node.categoryLft BETWEEN sub_parent.categoryLft AND sub_parent.categoryRgt
AND sub_parent.categoryName = sub_tree.categoryName
GROUP BY node.categoryName
ORDER BY node.categoryLft
它的伟大工程,但我本来希望修改只得到第一个节点旁边的选择的类别(在此“产品”),而子类的孩子
像: 产品:
类型A
SubTypeA
SubTypeB
的TypeB
我想 '类型A', '类型B'。
顺便说一句,这里是我的表:您正在使用
CREATE TABLE `Categories` (
`categoryId` int(11) NOT NULL auto_increment,
`categoryLft` int(11) NOT NULL,
`categoryRgt` int(11) NOT NULL,
`categoryName` varchar(255) default NULL,
`categoryAlias` varchar(255) default NULL,
PRIMARY KEY (`categoryId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
只是一个问题,是否真的需要创建这样一个复杂的分类机制?如果不是,我可以为每个任务类别表和查询提供一个简单且足够的信息。 – 2009-09-18 16:06:11
它会被用来对任何类型的东西进行分类,我对这些类别的外观没有任何想法,我只有一个规则“一个类别可以有多个子类别”。 它将用于独立于分类对象集中类别。 (它可以用户,文章,产品等...) 但我仍然愿意接受任何新的好主意...... – 2009-09-19 10:54:30