0

以下のようなスペースツリーのjson文字列を作成する必要があります:- http://philogb.github.io/jit/static/v20/Jit/Examples/Spacetree/example2.code.html

現在、以下のクエリを使用しています:-

SELECT BT.ParentID,BT.CustomerID,CU.firstname 
from BinaryTree BT INNER JOIN Customers CU on BT.CustomerID=CU.CustomerID
WHERE [ParentID] = 2
ORDER BY BT.ParentID,BT.CustomerID

次のように結果を返しています:-

ParentID   CustomerID  firstname
     2      100176         Bill
     2      115468        will

ここでは、2 がツリーのルート要素であり、100176,115468 が子要素であることを意味します。しかし、これらの子ノード 100176 と 115468 にもいくつかの子ノードがあり、これらは他のいくつかの子のルート/親ノードであることを意味します。クエリは次のようになります:-

SELECT BT.ParentID,BT.CustomerID,CU.firstname 
from BinaryTree BT INNER JOIN Customers CU on BT.CustomerID=CU.CustomerID
WHERE [ParentID] = 100176
ORDER BY BT.ParentID,BT.CustomerID

100176 の結果:-

 ParentID   CustomerID  firstname
   100176    100222       J
   100176    348645       K

SELECT BT.ParentID,BT.CustomerID,CU.firstname 
from BinaryTree BT INNER JOIN Customers CU on BT.CustomerID=CU.CustomerID
WHERE [ParentID] = 115468        
ORDER BY BT.ParentID,BT.CustomerID

115468 の結果:-

 ParentID   CustomerID  firstname
  115468     154756       D
  115468     348480       L

しかし、次のような1つのクエリですべての親と子が必要です:-

 ParentID   CustomerID  firstname
    2        100176       Bill
    2        115468       will
  100176     100222       J
  100176     348645       K
  115468     154756       D
  115468     348480       L

100176 と 115468 の子も子ノードを持つことができるため、これらも上記の結果の 100222,348645 の結果になるはずです。

どんな体でも私を助けることができますか?

前もって感謝します

4

1 に答える 1

1
WITH CustomerTree AS (
    SELECT ParentID
          ,CustomerID
          ,0 AS Level
    FROM BinaryTree
    WHERE ParentID = 2
  UNION ALL
    SELECT BinaryTree.ParentID
          ,BinaryTree.CustomerID
          ,CustomerTree.Level + 1 AS Level
    FROM BinaryTree
         INNER JOIN CustomerTree
            ON BinaryTree.ParentID = CustomerTree.CustomerID
)
SELECT CustomerTree.ParentID
      ,CustomerTree.CustomerId
      ,Customers.FirstName
FROM CustomerTree
     INNER JOIN Customers
         ON CustomerTree.CustomerID = Customers.CustomerID
于 2013-10-30T07:33:36.820 に答える