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