2017-02-09 65 views
0

我剛剛在SQL Server上安裝了Northwind。我設置了這個簡單的查詢,它連接了三個表。我正在嘗試加入3個表格並獲得我不完全瞭解的結果

SELECT SUPP.SupplierID, CompanyName, ContactName, ProductName, CategoryID, OrderID, ORD.ProductID 
FROM Suppliers as SUPP 
INNER JOIN Products as PROD 
ON SUPP.SupplierID=PROD.SupplierID 
INNER JOIN [Order Details] as ORD 
On PROD.ProductID=PROD.ProductID; 

我總共獲得165935條記錄。我認爲這會少得多。我想我在這裏錯過了一些基本的東西,但不知道是什麼。我知道這不是笛卡爾產品,但我不知道它是什麼。

這是模式。

https://northwinddatabase.codeplex.com/

我不希望任何超過2155條記錄,因爲這是在最大的表中的記錄最大數量,而最有可能的,我應該得到比2155

SELECT少了很多計數() FROM [NORTHWND] [DBO]。[訂單詳細信息] SELECT COUNT() FROM [NORTHWND] [DBO]。[產品] SELECT COUNT(*) FROM [NORTHWND]。[ dbo]。[供應商]

請讓我知道我在這裏做錯了什麼。

謝謝!

我編輯我的OP ...

下面的腳本能正常工作,並給了我2155分的記錄,這是我所期待的(或更少)。

SELECT [Order Details].OrderID, [Order Details].ProductID, Products.ProductID AS Expr1, Products.SupplierID, Suppliers.SupplierID AS Expr2, Suppliers.CompanyName 
FROM [Order Details] 
INNER JOIN 
Products ON [Order Details].ProductID = Products.ProductID 
INNER JOIN 
Suppliers ON Products.SupplierID = Suppliers.SupplierID 

事情是,我用'設計查詢編輯器'工具來獲得這個結果。我真的試圖通過在SQL中綁定每個字符來實現這個工作...而不是依賴於GUI工具...

+0

您的查詢和結果對我來說確定無誤。也許你可以描述你實際期望的輸出。順便說一句,你沒有做笛卡兒的產品。 –

+2

'在PROD.ProductID = PROD.ProductID;'看起來不對我 – Ghost

回答

0

鬼,你是對的!這是最後的結果。

SELECT SUPP.SupplierID, CompanyName, ContactName, ProductName, CategoryID, OrderID, ORD.ProductID 
FROM Suppliers as SUPP 
INNER JOIN Products as PROD 
ON SUPP.SupplierID=PROD.SupplierID 
INNER JOIN [Order Details] as ORD 
On ORD.ProductID=PROD.ProductID; 

我的錯誤。我唯一的藉口是,當我設置查詢時,我的8個月大的男嬰正在分散注意力。現在有道理。這就是我一直在尋找的。非常感謝!

相關問題