首页 > 解决方案 > 连接多个表 - 更好的性能和准确的数据

问题描述

我的 SQL Server 中的表很少。

见下图与表格和样本数据

我需要如下结果

结果

结果应包含结帐表中的员工详细信息以及其他表中的匹配记录

我写了以下脚本

select  <columns from different tables>  from  Checkin i 
inner join Checkout o on i.EmpCode=o.EmpCode
inner join Employee e on i.EmpCode=e.EmpCode
inner join City c on i.CityId=c.CityId
inner join Building b on i.BuildingId=b.BuildingcoId

这是正确的方法吗?它会包含重复值吗?

标签: sqlsql-servertsqlinner-join

解决方案


如果您想要所有结帐,请从该表开始并使用外连接。然后,检查JOIN条件:

select  <columns from different tables> 
from CheckOut co left join
     Checkin ci 
     on co.cinid = ci.cinid left join
     Employee e 
     on e.EmpCode = co.EmpCode left join
     City c
     on c.CityId = co.CityId left join
     Building b
     on b.BuildingId = co.BuildingId;

请注意,join条件是 toCheckOut而不是CheckIn


推荐阅读