如何在Mysql中使用临时表进行递归查询

时间:2011-11-02 14:26:15

标签: c# asp.net mysql sql

OrganisationID OrganisationName     parentID 
    1                Org1             Null
    2                Org2              1
    3                Org3              1
    4                Org4              2
    5                Org5              2
    6                Org5              4

表名是 tbl_Organisation

我有一张类似于此的桌子。我所要做的就是检索子组织并显示它。假设传递的组织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

1 个答案:

答案 0 :(得分:0)

这与Hierarchail查询有关:

SELECT (LPAD('',level * 3,'')|| OrganisationID)为Org_id,  组织名称,  的parentID,  水平 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 Org4 2 3    3 Org2 1 2