让我们的经典自连接例如Employee表中,我们有列empId,managerId,empName,Managername
。我想看到,谁是经理,然后在表名称另一名加盟经理的名字每一个员工。现在,我有问题的部分是,经理ID可以是空的一些记录。在这些情况下,SQL不起作用,因为mgr.name是空的,其有MGRID为空行:SQL自联接与空值的问题
SELECT emp.Name, mgr.Name FROM Employee e
LEFT JOIN Employee mgr ON e.empId=mgr.mgrId
JOIN Name nm ON nm.name = mgr.Name
是否有人可以提供一个解决方案?
对不起,这个问题过于简单: 它更像每个员工行,我也想要mgr行(mgrId是empId的行),然后将mgr行的属性连接到其他表。类似这样的:
select
emp.empId,mgr.empId,dept.deptName
from Employee emp
JOIN Address addr on
emp.houseNo = addr.houseNo
JOIN dept dept on
dept.deptAddress = addr.deptAddress
LEFT JOIN Employee mgr on
emp.empId = mgr.empId
JOIN Address address on
mgr.houseNo = address.houseNo
JOIN dept department on
department.houseNo=address.deptAddress
where
department.deptId=dept.deptId
使用所有左连接对此不起作用。谢谢您的帮助。
在你大SQL这样的:LEFT JOIN员工经理在emp.empId = mgr.empId看起来不正确。不应该是LEFT JOIN Employee mgr on emp.mgrId = mgr.empId – JBrooks 2011-02-02 04:38:42