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とCのアイテムを表示するよりもBを選択した場合(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 に答える