我使用的是SQL Server 2012的遞歸CTE SQL(親子)
LOCATIONDETAIL表
OID LOCATIONNAME PARENTID
1 GLOBAL 0
2 NORTH 1
3 SOUTH 1
4 NORTH1 2
5 SOUTH1 3
LOCATIONSITECONFIG表
OID LOCATIONID SITENAME
1 2 TEST
我使用遞歸CTE查詢
;WITH LOCALSITEHIERARCHY AS
(
SELECT A.OID
,A.PARENTOID
,CAST(A.LOCATIONNAME + ' (' + LSC.SITENAME + ')' AS NVARCHAR(100)) AS NAME
,LSC.OID AS SITEOID
FROM LOCATIONDETAIL A
INNER JOIN LOCATIONSITECONFIG LSC
ON LSC.LOCATIONDETAILOID = A.OID
WHERE
LSC.SITENAME <> 'GLOBAL' AND LSC.RECSTATUS = 'A'
UNION ALL
SELECT
A.OID
,A.PARENTOID
,CAST(A.LOCATIONNAME AS NVARCHAR(100))
,LH.SITEOID
FROM LOCATIONDETAIL A
INNER JOIN LOCALSITEHIERARCHY LH ON A.PARENTOID = LH.OID
)
SELECT * FROM LOCALSITEHIERARCHY
NORTH現在是一個sep在Global.Arate站點中查詢返回North和North 1的樹形結構,這是可以的。
當我將Global設爲新網站時,我不想將North列爲全球網站的一部分。
例如,添加部位2命名(NEWTEST),其是全球
LOCATIONSITECONFIG表
OID LOCATIONDETAILOID SITENAME
1 2 TEST
2 1 NEWTEST
上述查詢返回 全球,NORTH,NORTH1,SOUTH SOUTH1 並再次NORTH(TEST )AND NORTH1(重複的記錄)
我想要查詢返回 全局,北(測試),NORTH1,南,南1
如果孩子已經創建了網站,查詢應該忽略。請幫助
你想返回GLOBAL(NEWTEST),北(TEST),NORTH1,SOUTH SOUTH1? –