0

私はテーブルを持っています:

id  type_name               type_reportToId 
1   Administrator               0   
2   Guest   GUEST               1   
3   Landlord                    1   
4   Property Manager            3   
13  Manager Manager             3   
14  Asst. Property Manager     13   

ID No 14 の「階層へのレポート」の結果が必要です。例: ID 14 は 13 をレポートする必要があり、13 は 3 をレポートする必要があり、3 は 1 をレポートする必要があります ...同様に賢明です。mysql でそのためのクエリが必要です。誰でも私を助けることができますか?

4

1 に答える 1

0

クエリではなく、アプリケーションロジックで行うのが望ましいです。

擬似コード

query=SELECT id, type_name, type_reportToId FROM table ORDER BY id ASC, report_toId ASC

// loop through rows
currentParent = 0
processed = 0
hierarachyLevel = 0
while ( processed < foundrows ) 
{
     while ( row = fetchrow( dbResult ) )
    {
         if ( row[type_reportToId] == currentParent )
         {
             resultHierarchy[hierarchyLevel] = row
             currentParent = row[id]
             processed++
             hierarchyLevel++
             dataseek( dbResult, 0 )
             break
         }
   }

}

于 2012-11-13T07:20:01.827 に答える