1

为糟糕的问题标题道歉。

我有两张表,jobs 和 Persons-Jobs。

工作表

1    Painting

2    Plumbing

3    Executive

4    CraneOperator

人员-工作表

JohnSmit   Painting

JohnSmit   CraneOperator

TomJones   Executive

BradPit    Plumbing

问题

我想运行一个返回两列的查询。第一列必须显示作业表中的所有记录。第二列必须显示从事这项工作的人的姓名。我想要一个只返回一个用户的结果的 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

4

1 回答 1

4

您可以在 join 子句中对人员进行限制。这样,其他人将在加入发生之前被过滤掉。

select j.job,p.person 
from   jobs j 
LEFT 
JOIN   `Persons-Jobs` p 
on     j.job = p.job 
and    p.person='JohnSmit'
于 2012-06-19T16:51:12.017 回答