Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL SELECT中包含另一个SELECT_Mysql - Fatal编程技术网

MySQL SELECT中包含另一个SELECT

MySQL SELECT中包含另一个SELECT,mysql,Mysql,我的数据库中有一个有点疯狂的结构,其中用户和组织位于同一个表中(下面的示例) 它们都与PARENTID和MEMBERID连接,我需要得到的是: 获取所有“个人”的姓名,他们的成员ID,以及父母的姓名 结果应该如下所示: UserName1 | DHAD781 | OrgName1 -------*/*------------*/*------------*/*------------*/*------------*/*------------ MEMBERID le

我的数据库中有一个有点疯狂的结构,其中用户和组织位于同一个表中(下面的示例)

它们都与PARENTID和MEMBERID连接,我需要得到的是: 获取所有“个人”的
姓名
,他们的
成员ID
,以及父母的
姓名

结果应该如下所示:

UserName1 | DHAD781  | OrgName1
    -------*/*------------*/*------------*/*------------*/*------------*/*------------
    MEMBERID      level          name           kind         status      PARENTID
    -------*/*------------*/*------------*/*------------*/*----------*/*------------
    EMD123F |     2        |   OrgName1   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    DHAD781 |     3        |   UserName1  |    Person    |   active   |  EMD123F 
    ---------------------------------------------------------------------------------
    7AJIZU7 |     3        |   UserName2  |    Person    |   active   |  EMD123F 
    ---------------------------------------------------------------------------------
    DME123F |     2        |   OrgName2   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    TT5451AL|     3        |   UserName3  |    Person    |   active   |  DME123F 
    ---------------------------------------------------------------------------------
    RRMI7481|     2        |   OrgName3   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    PPUNSAD9|     2        |   OrgName4   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    GJASDNZB|     3        |   UserName4  |    Person    |  inactive  |  PPUNSAD9
    ---------------------------------------------------------------------------------
    KJNSCZM7|     2        |   OrgName5   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    1UZGOPAS|     3        |   UserName5  |    Person    |   deleted  |  KJNSCZM7
    ---------------------------------------------------------------------------------
表格示例:

下面是db的外观示例:

UserName1 | DHAD781  | OrgName1
    -------*/*------------*/*------------*/*------------*/*------------*/*------------
    MEMBERID      level          name           kind         status      PARENTID
    -------*/*------------*/*------------*/*------------*/*----------*/*------------
    EMD123F |     2        |   OrgName1   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    DHAD781 |     3        |   UserName1  |    Person    |   active   |  EMD123F 
    ---------------------------------------------------------------------------------
    7AJIZU7 |     3        |   UserName2  |    Person    |   active   |  EMD123F 
    ---------------------------------------------------------------------------------
    DME123F |     2        |   OrgName2   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    TT5451AL|     3        |   UserName3  |    Person    |   active   |  DME123F 
    ---------------------------------------------------------------------------------
    RRMI7481|     2        |   OrgName3   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    PPUNSAD9|     2        |   OrgName4   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    GJASDNZB|     3        |   UserName4  |    Person    |  inactive  |  PPUNSAD9
    ---------------------------------------------------------------------------------
    KJNSCZM7|     2        |   OrgName5   |     Org      |            |  rootID
    ---------------------------------------------------------------------------------
    1UZGOPAS|     3        |   UserName5  |    Person    |   deleted  |  KJNSCZM7
    ---------------------------------------------------------------------------------
我尝试的是:

SELECT t1.NAME, t1.MEMBERID 
    FROM roles t1 
    inner join roles t2 on t2.PARENTID = t1.MEMBERID
    WHERE t1.kind= 'Person'
我从这个查询中得到:
发现0个结果

似乎情况正好相反:

SELECT persons.NAME, persons.MEMBERID, orgs.NAME, orgs.MEMBERID
    FROM roles persons 
    INNER JOIN roles orgs on persons.PARENTID = orgs.MEMBERID
    WHERE persons.kind = 'Person'
此外,选择显式别名可以使查询更具可读性(并且更不容易出错:)


我认为您交换了字段层次结构。您的查询选择所有用户,然后应该加入以获取所有组织,因此
t1
是用户,
t2
是组织(如果您已正确规范化)。因此,
t1.PARENTID
应该等于
t2.MEMBERID
,而不是相反。嘿@X.L.Ant,谢谢你的回答,不过这也会返回空值结果。看起来我拼错了一些东西(这只是示例数据,当我将其编辑为real DB时,我犯了一个错误:(抱歉,谢谢你的回答!