我剛剛在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工具...
您的查詢和結果對我來說確定無誤。也許你可以描述你實際期望的輸出。順便說一句,你沒有做笛卡兒的產品。 –
'在PROD.ProductID = PROD.ProductID;'看起來不對我 – Ghost