2013-05-03 25 views
0

我對mssql中的分層類別排序有問題。我有sql代碼在下面的代碼段中列出了具有其級別的類別。使用子類別的ID進行分層分類排序

WITH TempCtgry (CtgryID, CtgryName, ParentCtgryId, Lvl)AS (SELECT CategoryID,CategoryName ,ParentCatID, 0 as Level FROM Category r WHERE r.ParentCatID IS NULL UNION ALL SELECT r1.CategoryID, r1.CategoryName, r1.ParentCatID, TempCtgry.Lvl+1 FROM Category r1 INNER JOIN TempCtgry on r1.ParentCatID= TempCtgry.CtgryID) SELECT * FROM TempCtgry

但我想告訴子類的實例parents.For:電視>>智能>>液晶電視

我怎麼能這樣做?

謝謝和國王的問候!

回答

1

建立起來,當您去,就像計數水平:

WITH TempCtgry (CtgryID, CtgryName, ParentCtgryId, Lvl) AS (
    SELECT CategoryID, CategoryName, ParentCatID, 0 as Level, 
    Convert(VarChar(1024), CategoryName) as Path 
    FROM Category r 
    WHERE r.ParentCatID IS NULL 
    UNION ALL 
    SELECT r1.CategoryID, r1.CategoryName, r1.ParentCatID, TempCtgry.Lvl + 1, 
    Convert(VarChar(1024), Path + ' >> ' + r1.CategoryName) as Path 
    FROM Category r1 INNER JOIN 
     TempCtgry on r1.ParentCatID = TempCtgry.CtgryID 
) 
    SELECT * 
    FROM TempCtgry 

要顯示的路徑爲網頁上的鏈接,你會希望有兩個用於顯示的類別名稱和相應的IDS用於鏈接。一個簡單的分隔符,允許您使用字符串分隔功能,例如this,簡化了顯示用代碼:

WITH TempCtgry (CtgryID, CtgryName, ParentCtgryId, Lvl) AS (
    SELECT CategoryID, CategoryName, ParentCatID, 0 as Level, 
    Convert(VarChar(1024), CategoryName) as Path, 
    Convert(VarChar(1024), CategoryID) as PathIds 
    FROM Category r 
    WHERE r.ParentCatID IS NULL 
    UNION ALL 
    SELECT r1.CategoryID, r1.CategoryName, r1.ParentCatID, TempCtgry.Lvl + 1, 
    Convert(VarChar(1024), Path + '|' + r1.CategoryName) as Path, 
    Convert(VarChar(1024), PathIds + '|' + Convert(VarChar(9), CategoryId)) as PathIds 
    FROM Category r1 INNER JOIN 
     TempCtgry on r1.ParentCatID = TempCtgry.CtgryID 
) 
    SELECT * 
    FROM TempCtgry 

注意:這假定一個垂直條(「|」)不能在一個類別名字發生。

ASP.NET代碼將需要拆分兩個路徑字符串,並一起創建鏈接。方便的顯示分隔符是「»」(U + 00BB:右指向雙角度引號)。

可以將所有代碼添加到查詢中以生成所需的HTML,但這不屬於它的位置。

+0

我怎樣才能進入鏈接在asp.net.It的工作良好,但是當我想表明,在asp.net頁面它給了我的字符串,我怎麼能鏈接到路徑列中的每個cateogry?謝謝 – 2013-05-04 08:15:55

+0

@KaanKılıç - 更新的答案顯示如何處理建築物鏈接的類別名稱和ID。 – HABO 2013-05-04 11:03:08

+0

謝謝先生。謹向你問好,這對我很有幫助。 – 2013-05-04 12:18:22

相關問題