[英]complex sql query to get data for JIT spacetree
我需要建立JSON字符串像以下spacetree: - 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
但是我需要所有的父母和孩子在一個查詢中,例如:
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的結果。
有誰能夠幫助我?
提前致謝
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.