第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將平臺(tái)解析成樹的最有效/優(yōu)雅的方法是什么?

將平臺(tái)解析成樹的最有效/優(yōu)雅的方法是什么?

慕森王 2019-05-27 11:05:02
將平臺(tái)解析成樹的最有效/優(yōu)雅的方法是什么?假設(shè)您有一個(gè)存儲(chǔ)有序樹層次結(jié)構(gòu)的平面表:Id   Name         ParentId   Order 1   'Node 1'            0      10 2   'Node 1.1'          1      10 3   'Node 2'            0      20 4   'Node 1.1.1'        2      10 5   'Node 2.1'          3      10 6   'Node 1.2'          1      20這是我們所擁有的圖表[id] Name。根節(jié)點(diǎn)0是虛構(gòu)的。                       [0] ROOT                          / \               [1]節(jié)點(diǎn)1 [3]節(jié)點(diǎn)2              / \ \    [2]節(jié)點(diǎn)1.1 [6]節(jié)點(diǎn)1.2 [5]節(jié)點(diǎn)2.1          /           [4]節(jié)點(diǎn)1.1.1您將使用什么簡(jiǎn)約方法將其輸出為HTML(或文本,就此而言)作為正確排序,正確縮進(jìn)的樹?進(jìn)一步假設(shè)你只有基本的數(shù)據(jù)結(jié)構(gòu)(數(shù)組和散列圖),沒有帶有父/子引用的花哨對(duì)象,沒有ORM,沒有框架,只有你的雙手。該表表示為結(jié)果集,可以隨機(jī)訪問(wèn)。偽代碼或普通英語(yǔ)是可以的,這純粹是一個(gè)概念性的問(wèn)題。額外問(wèn)題:在RDBMS中存儲(chǔ)這樣的樹結(jié)構(gòu)是否有根本更好的方法?
查看完整描述

3 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

從Oracle 9i開始,您可以使用CONNECT BY。


SELECT LPAD(' ', (LEVEL - 1) * 4) || "Name" AS "Name"

FROM (SELECT * FROM TMP_NODE ORDER BY "Order")

CONNECT BY PRIOR "Id" = "ParentId"

START WITH "Id" IN (SELECT "Id" FROM TMP_NODE WHERE "ParentId" = 0)

從SQL Server 2005開始,您可以使用遞歸公用表表達(dá)式(CTE)。


WITH [NodeList] (

  [Id]

  , [ParentId]

  , [Level]

  , [Order]

) AS (

  SELECT [Node].[Id]

    , [Node].[ParentId]

    , 0 AS [Level]

    , CONVERT([varchar](MAX), [Node].[Order]) AS [Order]

  FROM [Node]

  WHERE [Node].[ParentId] = 0

  UNION ALL

  SELECT [Node].[Id]

    , [Node].[ParentId]

    , [NodeList].[Level] + 1 AS [Level]

    , [NodeList].[Order] + '|'

      + CONVERT([varchar](MAX), [Node].[Order]) AS [Order]

  FROM [Node]

    INNER JOIN [NodeList] ON [NodeList].[Id] = [Node].[ParentId]

) SELECT REPLICATE(' ', [NodeList].[Level] * 4) + [Node].[Name] AS [Name]

FROM [Node]

  INNER JOIN [NodeList] ON [NodeList].[Id] = [Node].[Id]

ORDER BY [NodeList].[Order]

兩者都將輸出以下結(jié)果。


名稱

'節(jié)點(diǎn)1'

'節(jié)點(diǎn)1.1'

'節(jié)點(diǎn)1.1.1'

'節(jié)點(diǎn)1.2'

'節(jié)點(diǎn)2'

'節(jié)點(diǎn)2.1'


查看完整回答
反對(duì) 回復(fù) 2019-05-27
  • 3 回答
  • 0 關(guān)注
  • 539 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)