我有2个表:Employee和具有结构的人
Employee: Id, PersonId, Designation, IsActive
Person:Id, Name, Contact
Employee的PersonId列引用Person的Id,可以为null
我需要返回员工的姓名,我的加入条件是
SELECT emp.Salary, emp.Designation, emp.IsActive, p.Name from Employee emp
JOIN Person P ON P.Id = emp.PersonId or (p.Id is NULL AND emp.Id IS NULL)
这是不正确的,因为我的要求是:
If emp.PersonId = null, return p.Name = NULL
else return p.Name = Person's Name from table
关于此的任何指示?
答案 0 :(得分:2)
您需要外部联接
SELECT emp.Salary, emp.Designation, emp.IsActive, p.Name
from Employee emp
left JOIN Person P
ON P.Id = emp.PersonId
当你使用INNER JOIN(或JOIN)时,你只选择与join critiria匹配的行,在你的例子中,你永远不会有一个NULL Person名称,因为如果Employee没有与Person联系,那么该记录将不会地选择。
如果您使用OUTER JOIN(LEFT / RIGHT JOIN),将选择主表中的所有记录(第1个带LEFT,第2个带RIGHT)。
希望这有帮助。