要在資料庫取得具有樹狀結構的資料查詢結果,若是使用SQL Server,可以使用內建的CTE(Common Table Expression)查詢指令,但其他資料庫大都不支援這語法,雖然也可以利用DB Stored Procedure或自訂Function/View來取得遞迴式資料,但總是綁DB太深。
不管是寫在DB或Program兩端,這種遞迴式資料都挺耗效能的,隨著指定Level愈大,所執行的SQL命令總數更多。因此若是目標資料並沒有很大量,其實應該一次全取回,再於Client端利用程式作Recurisve建立樹狀結構。
為了能跨不同DB,也為了簡化Recursive查詢,我寫了一個Helper物件,可以遞迴執行所需的DB查詢指令,若是資料量及階層數不多(如2層內),總DB執行次數不會太多,算是比較獨立且簡單的實作方式。