选择嵌套集中的项目

时间:2013-01-12 07:56:44

标签: mysql sql nested-sets

我有以下嵌套集。

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

1 个答案:

答案 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')