mysql-用左连接表显示数据,但不显示连接数据的结果

sshcrbum  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(413)

我有两张table mySQL 数据库 applicants 以及 applicant_childrens . 这个 applicants 表包含家长及其子女的用户详细信息。这个 applicant_childrens 是连接父级和子级的联接表。下面是表格的细节。
申请人

id | name  | ic   | address
----------------------------
1  | Amran | 5115 | KL
2  | Zack  | 1234 | KL
3  | Nur   | 1156 | Sel
4  | Aisya | 8701 | Sabah

申请人子女

id | ic_parent | ic_chidlren 
----------------------------
1  | 5115      |  1156
2  | 5115      |  8701

我的问题是,我要如何选择一个数据来显示所有申请者的详细信息,但不显示孩子的名字?例如,我想要的表是:

id | name  | ic   | address | id | ic_parent | ic_children
----------------------------------------------------------
1  | Amran | 5115 | KL      | 1  | 5115      | 1156
1  | Amran | 5115 | KL      | 2  | 5115      | 8701
2  | Zack  | 1234 | KL

目前我得到的结果如下:

SELECT * FROM `applicants` ap 
LEFT JOIN applicant_childrens ac 
ON ap.ic=ac.ic_parent

id | name  | ic   | address | id | ic_parent | ic_children
----------------------------------------------------------
1  | Amran | 5115 | KL      | 1  | 5115      | 1156
1  | Amran | 5115 | KL      | 2  | 5115      | 8701
2  | Zack  | 1234 | KL
3  | Nur   | 1156 | Sel
4  | Aisya | 8701 | Sabah
neskvpey

neskvpey1#

你可以试试下面的查询-

SELECT * FROM applicants ap 
LEFT JOIN applicant_childrens ac
ON ap.ic=ac.ic_parent
WHERE ap.ic NOT IN (SELECT ic_children FROM applicant_childrens)
wpcxdonn

wpcxdonn2#

你需要澄清你的预期结果:你为什么期待扎克( ic=1234 )但不是努尔或艾西娅?这3个用户都不在你的电脑里 applicant_childrens table。从我理解你的逻辑来看,似乎只有阿姆兰的名字会出现。
我认为你需要从以下几个方面入手 applicant_children ,然后 LEFT JOIN ing到 applicants 两次:一次给家长,一次给家长。
这样做:

SELECT
    parent.`id` AS applicant_id,
    parent.`name`,
    parent.`ic`,
    parent.`address`,
    ac.`id` AS ac_id,
    parent.`ic` AS ic_parent,
    child.`ic` AS ic_children
FROM applicant_childrens ac
    LEFT JOIN applicants parent ON
        parent.ic = ac.ic_parent
    LEFT JOIN applicants child ON
        child.ic = ac.ic_children

结果如下:

applicant_id name   ic      address ac_id ic_parent   ic_children
1            Amran  5115    KL      1     5115        1156
1            Amran  5115    KL      2     5115        8701

请注意您的 applicants 表未出现。同样,你需要澄清为什么你会期望它。

相关问题