我有以下嵌套集。
cat.table:
cat.ID Name Lft Rgt
1 A 1 8
2 B 2 5
3 C 3 4
4 D 6 7
5 E 9 14
6 F 10 11
7 G 12 13
输出:括号中的项目计数。 (在“A”中将计算其节点中的项目--B,C和D)
A (7)
-B (3)
--C (2)
-D (1)
E (3)
-F (1)
-G (2)
项目表:
ID Cat.ID Name
1 1 item1
2 2 item2
3 2 item3
4 2 item4
5 3 item5
6 3 item6
7 4 item7
8 6 item8
9 7 item9
10 7 item10
如果我选择Cat A而不是我想选择B,C和D中的项目。如果我选择B,则显示B和C中的项目。如果我选择F而不是仅显示来自F ... 在Items表中,我没有只有Cat.ID。
的左右值我如何知道如果选择“A”类别,哪些项目也在“B”,“C”和“D”中?
修改 例如: 如果我选择B而不是显示B和C中的项目(B是C的父项,C是B的节点) - 输出:
item2
item3
item4
item5
item6
答案 0 :(得分:1)
答案在链接文章的检索完整树段落中。
SELECT Id,Name FROM Items WHERE cat_id IN (
SELECT cat_id
FROM category AS node,
category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND parent.name = 'A')