2015-11-19 30 views
0

我必须在3个条件参加职工3次加入。我可以在3种情况下加入一次员工吗?如何优化多选择比较/只有一个表的SQL

select 
referType = resAffType, 

referName = (case when resAffType = 0 then e.empFirstName + ' ' + e.empLastName 

when resAffType = 1 then affFirstName + ' ' + affLastName 

else NULL end), 

bookName = e3.empFirstName + ' ' + e3.empLastName, 

AssignToName = e2.empFirstName + ' ' + e2.empLastName, 

from 

Reservation r 

left join ClubTable c on r.TableISN = c.TableISN 

left join Affiliate a on r.AffiliateISN = a.AffiliateISN -- r.aff maybe in table aff 

left join Employee e on r.AffiliateISN = e.EmployeeISN -- r.aff maybe in table emp 

left join Employee e2 on r.EmployeeISN = e2.EmployeeISN -- assignedby emp 

inner join Employee e3 on r.EmployeeISN = e3.EmployeeISN -- bookedby emp 
+0

您可以加入多个条件,如下面的答案,但是这不会给你同样的结果集,你会从你的示例查询上面看到。总之,你已经做的是正确的。 – user5151179

+0

ok,tk回复:) –

+0

你可以仔细检查你的代码吗?看起来你的最后两个连接的连接条件是相同的,只有一个是左边的,一个是内部连接。我猜这是一个错字。出于好奇,你列出的方法的缺点是什么,加入同一张桌子三次?这是一个完美的方法。只是好奇,要了解你的问题的上下文 – Hambone

回答

0

不,你已经在做的是正确的。

+0

好的,tk为你的答复:) –

+0

这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/10256175) – Chris

+0

@Chris它不能回答这个问题吗?如果答案是否定的,那么真的没有其他补充。 – Lundin