我正在檢查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