2011-11-02 116 views
0
OrganisationID OrganisationName  parentID 
    1    Org1    Null 
    2    Org2    1 
    3    Org3    1 
    4    Org4    2 
    5    Org5    2 
    6    Org5    4 

表名是tbl_Organisation如何做到使用臨時表遞歸查詢在MySQL

我有一個類似的表格。我正在嘗試的是檢索子組織並顯示它。假設傳遞的組織ID是3,那麼Org3沒有任何子組,因此它只顯示Org3。假設如果OrgID = 2,那麼Org2有一個孩子Org4並且Org4有一個孩子Org5。因此,對於OrgID = 2,我必須顯示Org2,Org4和Or5。那我該怎麼做。我嘗試了一些東西,但沒有按照我的意圖工作。

SELECT distinct b.OrganisationID,b.OrganisationName 
FROM tbl_organisation as a LEFT OUTER JOIN tbl_organisation as b 
on a.OrganisationID=b.ParentID where a.OrganisationID=b.parentID 

告訴我在哪裏,我錯了 我在asp.net網站利用這一點,我使用C#和mysql

+0

檢查了這一點http://stackoverflow.com/questions/1757260/simplest-way-to-do -a遞歸自加入在-SQL服務器 – juharr

回答

0

這與Hierarchail查詢:

選擇(LPAD ( ' '水平* 3,'')|| OrganisationID)作爲Org_id, OrganisationName, 的parentID, LEVEL FROM tbl_Organisation START WITH OrganisationID = ---

評論:通過組織ID這裏

CONNECT BY PRIOR = OrganisationID的parentID

如果傳遞1作爲OrganizationID那麼輸出將是

Org_id OrganisationName的parentID LEVEL 1 ORG1 1 2 ORG2 1 2 4 Org4 2 3 6 Org6 4 4 5 2 Org4 3 3 ORG2 1 2