我正在检查Northwind数据库。有一个名为“发票”的视图相当复杂。内部连接的顺序
我试图改变原来的sql(拉最后的内部联合起来,与其他内部联合声明合并)。
'官方' 的代码来获取发票:(正确)
SELECT *
FROM dbo.Shippers as shipper
INNER JOIN dbo.Products as product
INNER JOIN dbo.Employees as employee
INNER JOIN dbo.Customers as customer
INNER JOIN orders as orders
ON customer.CustomerID = orders.CustomerID
ON employee.EmployeeID = orders.EmployeeID
INNER JOIN dbo.[Order Details]
ON orders.OrderID = dbo.[Order Details].OrderID
ON product.ProductID = dbo.[Order Details].ProductID
ON shipper.ShipperID = orders.ShipVia
我第一次尝试:(不工作)
SELECT *
FROM dbo.Shippers as shipper
INNER JOIN dbo.Products as product
INNER JOIN dbo.Employees as employee
INNER JOIN dbo.Customers as customer
INNER JOIN orders as orders
INNER JOIN dbo.[Order Details]
ON orders.OrderID = dbo.[Order Details].OrderID
ON product.ProductID = dbo.[Order Details].ProductID
ON shipper.ShipperID = orders.ShipVia
ON customer.CustomerID = orders.CustomerID
ON employee.EmployeeID = orders.EmployeeID
我的第二次尝试(作品):
select *
from Orders as orders
inner join Shippers as ships
on ships.ShipperID = orders.ShipVia
inner join [Order Details] as ods
on ods.OrderID = orders.OrderID
inner join Products as products
on ods.ProductID = products.ProductID
inner join Customers as customers
on customers.CustomerID = orders.CustomerID
两人都返回2155行记录。
这里是表结构的参考:
我的问题是,为什么“我的第一次尝试”是不正确的? 另外,你认为我的第二次尝试是正确的吗?
感谢
'官方'代码有效。仍然通过语法检查。 @John Woo – CodeFarmer 2014-11-25 06:37:08
INNER JOIN语法错误会导致错误。从MSDN中检查此语法:http://msdn.microsoft.com/en-us/library/bb208854(v=office.12).aspx – 2014-11-25 06:38:20
第一次尝试的问题是什么?你是否收到语法错误?如果是这样,你能分享一下吗? – Mureinik 2014-11-25 06:43:49