日期:2014-05-19  浏览次数:20725 次

求:多表关联的高效SQL语句
现有A、B、C、D、E、F六个表,其中
A与B通过字段LocationID左外连接;
A与C通过字段CustomerID内连接;
A与D通过字段OrderID内连接;
D与E通过字段ItemID左外连接;
D与E通过字段UnitID内连接;
求在ms   sql中最有效率的SQL语句写法!

------解决方案--------------------
---- 例子--- 把*变成你要的列名
select *
from a left join b on a.LocationID=b.LocationID
inner join c on a.CustomerID=c.CustomerID
inner join (select * from d left join e on d.ItemID=e.ItemID inner join f on d.UnitID=f.UnitID) t on a.OrderID=t.OrderID
------解决方案--------------------
A与C通过字段CustomerID内连接;
A与D通过字段OrderID内连接;
A与B通过字段LocationID左外连接;
D与E通过字段UnitID内连接;
D与E通过字段ItemID左外连接;
先内连后外连,先大连后小连,应该有所提高
------解决方案--------------------
select * from a0 a left join a1 b on a.customerid=b.customerid inner join a2 c on b.locationid=c.locationid inner join a3 d on c.employeeid=d.employeeid