我一直在搜索谷歌,但似乎无法弄清楚我的情况。我想要做的是加入一个拥有与他相关的工作列表的客户。我希望客户和任何"活跃的"就业,换句话说,他们还没有被删除。已删除的标志是datedeleted列是否为null。
所以让我们说我有一张桌子顾客:
ID - Name
1 - Joe Blow
2 - John Smith
我还有一张乔布斯表
ID - CustomerId - Name - DateDeleted
1 - 1 Build Fence NULL
2 - 2 - Clean Yard - 25/12/2014
我想要做的是让客户获得他们的工作清单。现在我知道如果我和Jow Blow一起加入它可以正常工作,但是当我想要得到John Smith时它不起作用,它没有返回任何行,因为我正在检查Deleted标志然后不会为工作返回任何行,而这些行又不会返回任何客户。
SELECT c.id, c.name, j.name as JobName from customer c
left join job j on c.id = j.CustomerId
where c.id = :id AND j.date_deleted IS NULL
我希望结果是:
Id - Name - JobName
1 - Jow Blow - Build Fence
或
Id - Name - JobName
2 - John Smith - NULL
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
问题出在你的WHERE
条款中。添加AND j.date_deleted IS NULL
后,您将OUTER JOIN
变为INNER JOIN
。您需要将此条件移至ON
的{{1}}条款。
请改用:
OUTER JOIN
答案 1 :(得分:0)
试试这种方法。根据我的理解,你想展示那些没有约会的工作。
select e.Id,e.Name,( case when j.date is null then j.name else null end) as Jobprocess from
customer e
left join job j on e.Id=j.custId