SqlServer_处理复杂外部连接;

本文介绍如何通过SQL实现供应商与地址信息的整合,包括两种有效的连接查询方案,旨在展示如何从数据表中获取供应商名字及对应地址信息,并讨论了连接查询的优缺点。
数据表:Vendors供应商表、Address地址信息表、VendorAddress供应商地址关联表;
说明:因为有可能一个供应商对应多个地址,一个地址对应多个供应商,所以需要VendorAddress关联表;
要求:显示所有供应商的名字、地址信息;
实现:
1、两次外部连接
SELECT v.VendorName, a.Address
FROM Vendors v
LEFT OUTER JOIN VendorAddress va ON v.vendorID = va.VendorID
LEFT OUTER JOIN Address a ON va.AddressID = a.AddressID;
2、外部连接、内部连接合用
SELECT v.VendorName, a.Address
FROM VendorAddress va
JOIN Address a ON va.AddressID = a.AddressID
RIGHT OUTER JOIN Vendors v ON v.vendorID = va.VendorID;
3、错误结合
SELECT v.VendorName,a.Address
FROM Vendors v
LEFT OUTER JOIN VendorAddress va ON v.vendorID = va.VendorID
JOIN Address a ON va.AddressID = a.AddressID;
此时,所得结果不是全部供应商信息。从上面可知,先用左外部链接查询出所有的供应商,但后边用内部链接时就又排除那些不匹配项;
总结:相对来说,对于1、2方案,选用哪个好?一般没什么明显优点,但在这里,建议选用2号方案!通常,我们应首先使用内部连接,然后尽量少地使用外部连接,这样可减少代码中的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值