MySQL外部连接三个表
我很难在三张桌子上进行连接。我有这些桌子:MySQL外部连接三个表,mysql,join,multiple-tables,Mysql,Join,Multiple Tables,我很难在三张桌子上进行连接。我有这些桌子: table teams: id_team | team_name --------+----------- 1 | Alpha 2 | Beta 3 | Charlie --------+---------- table persons id_person | name ----------+------- 1 | Homer 2 | Ned 3 | Mo
table teams:
id_team | team_name
--------+-----------
1 | Alpha
2 | Beta
3 | Charlie
--------+----------
table persons
id_person | name
----------+-------
1 | Homer
2 | Ned
3 | Moe
----------+--------
table teams_has_persons
id_team | id_person | is_leader
--------+-----------+-----------
1 | 1 | 0
1 | 2 | 1
2 | 3 | 0
--------+-----------+-----------
一个团队可以包含人员,也可以不包含人员。
一个团队可能有也可能没有领导者,尽管它有人。
一个团队只能有一个领导者
我想列出所有团队及其领导人。
如果团队没有领导者,则应显示空值(或任何其他内容),而不是领导者的姓名。
如果一个团队不在表中,那么团队成员应为
显示为没有领导的团队
期望输出:
id_team | team_name | leader
--------+-----------+-----------
1 | alpha | Ned
2 | beta | <null>
3 | charlie | <null>
--------+-----------+-----------
显示团队及其关联人员的列表,但不是我想要的
谢谢大家抽出时间我无法评论。。。 你需要这样的东西吗?
SELECT
a.id_team,
a.team_name,
b.id_person,
b.is_leader,
c.name
FROM
teams as a
LEFT OUTER JOIN (teams_has_persons as b INNER JOIN persons as c ON b.id_person = c.id_person ) ON (a.id_team = b.id_team)
SELECT
a.id_team,
a.team_name,
b.id_person,
b.is_leader,
c.name
FROM
teams as a
LEFT OUTER JOIN (teams_has_persons as b
INNER JOIN persons as c ON b.id_person = c.id_person )
ON (a.id_team = b.id_team AND b.is_leader = 1)