1

ツリー構造を表すテーブル tbltestingtree があります。Member_Id はメンバーの ID、Parent_Id はそのメンバーの Parentid を表します。Lefts and Rights は、メンバーが親の左または右に接続されていることを示します。 私の問題は、特定の親のペアリングされたメンバーの総数をカウントする sqlquery を作成する必要があることです。

ID 1 の元メンバーには、ID 2、3、4 の 3 つのペアがあり
ます。現在、ID 2 のメンバーには、ID 4 の 1 つのペアがあります。

  Member_Id     Parent_Id      Lefts         Rights
     1               Null       Null          Null  
     2                1          1            Null
     3                1         Null           1
     4                2          1            Null
     5                2         Null           1
     6                3          1            Null
     7                3         Null           1
     8                4          1            Null
     9                4         Null           1

ツリーの画像はこちら: http://imageshack.us/content_round.php?page=done&l=img4/4605/65ai.jpg

4

2 に答える 2

0

これはあなたが探しているクエリだと思います:

WITH children AS (
  SELECT Parent_Id, COUNT(Parent_Id) AS NR_CHILDREN
  FROM TREE
  GROUP BY Parent_Id
  HAVING COUNT(Parent_Id) >= 2
  )
SELECT T.Parent_Id AS 'PARENT', T.Member_Id AS 'CHILDREN'
FROM TREE T JOIN
  CHILDREN C ON T.Member_Id = C.Parent_Id
WHERE ISNULL(T.Parent_Id, 0) <> 0

コードを含むSQLFiddleを次に示します。

于 2013-10-03T12:10:22.757 に答える