0

我有以下嵌套集。

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
4

1 回答 1

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')
于 2013-01-12T08:56:09.590 回答