2011-11-02 27 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