为糟糕的问题标题道歉。
我有两张桌子,工作和人员 - 工作。
职位表
1 Painting
2 Plumbing
3 Executive
4 CraneOperator
人员 - 工作表
JohnSmit Painting
JohnSmit CraneOperator
TomJones Executive
BradPit Plumbing
问题
我想运行一个返回两列的查询。第一列必须显示jobs表中的所有记录。第二列必须显示执行该作业的人员的姓名。我想要一个where子句,只返回一个用户的结果,在本例中为JohnSmit。作为示例,查询应输出:
Painting JohnSmit
Plumbing *NULL*
Executive *NULL*
CraneOperator JohnSmit
我已经尝试过外连接,但是在Persons-Jobs表中有多个人的地方失败了。
select j.job,p.person
from jobs j
LEFT OUTER JOIN `Persons-Jobs` p on j.job = p.job
where p.person='JohnSmit'
or p.person is NULL
任何帮助,一如既往地表示赞赏。
谢谢和问候, Smudger
答案 0 :(得分:4)
您可以在join子句中对person进行限制。这样,在加入发生之前,其他人就会被过滤掉。
select j.job,p.person
from jobs j
LEFT
JOIN `Persons-Jobs` p
on j.job = p.job
and p.person='JohnSmit'