1
好吧,我試圖在stackoverflow上找到一個適用於我的例子,但我無法找到它。我試圖遞歸地連接每個節點的父節點在一個擁有父節點/子節點的表中。以下是我迄今爲止:TSQL遞歸連接嵌套導航名稱
CREATE TABLE #TBL_EXAMPLE (
PARENT_NAV_ID INT,
NAV_ID INT,
NAV_NAME VARCHAR(25)
)
INSERT INTO #TBL_EXAMPLE VALUES(NULL, 1, 'MILKY WAY')
INSERT INTO #TBL_EXAMPLE VALUES(1, 2, 'SOLAR SYSTEM')
INSERT INTO #TBL_EXAMPLE VALUES(3, 4, 'EARTH')
INSERT INTO #TBL_EXAMPLE VALUES(4, 5, 'ANTARCTICA')
; WITH #EXAMPLE_CTE AS (
SELECT
PARENT_NAV_ID,
NAV_ID,
NAV_NAME,
CAST('' AS VARCHAR(MAX)) AS NAV_PARENT_NAME
FROM #TBL_EXAMPLE
WHERE PARENT_NAV_ID IS NULL
UNION ALL
SELECT
EXMP.PARENT_NAV_ID,
EXMP.NAV_ID,
EXMP.NAV_NAME,
CT.NAV_PARENT_NAME + '/' + EXMP.NAV_NAME AS PARENT_NAV_NAME
FROM #TBL_EXAMPLE EXMP
INNER JOIN #EXAMPLE_CTE CT ON EXMP.PARENT_NAV_ID = CT.NAV_ID
)
SELECT
*
FROM #EXAMPLE_CTE
我得到的是這樣的:
PARENT_NAV_ID NAV_ID NAV_NAME NAV_PARENT_NAME
NULL 1 MILKY WAY
1 2 SOLAR SYSTEM /SOLAR SYSTEM
我想這樣什麼:
PARENT_NAV_ID NAV_ID NAV_NAME NAV_PARENT_NAME
NULL 1 MILKY WAY MILKY WAY
1 2 SOLAR SYSTEM MILKY WAY/SOLAR SYSTEM
3 4 EARTH MILKY WAY/SOLAR SYSTEM/EARTH
4 5 ANTARCTICA MILKY WAY/SOLAR SYSTEM/EARTH/ANTARCTICA
我知道我缺少的一些基本認識CTE如何工作,但我遇到了一些讓我明白的東西。任何幫助表示讚賞!
哇,我覺得愚蠢。謝謝! –
沒關係,我添加了一個微小的編輯... – Shnugo
說實話:一個人能夠寫遞歸CTEs肯定是**不**:愚蠢:-)快樂的編碼! – Shnugo