2012-03-19 261 views
0

我用Northwind數據庫,測試與下面的查詢:內連接 - SQL服務器

SELECT * 
    FROM products 
    JOIN suppliers ON suppliers.supplierID = products.supplierID 

,我得到了一個紅色的消息是這樣的:

消息4104,級別16,狀態1,行1
無法綁定多部分標識符「products.supplierID」。

任何人都可以點亮一下嗎?非常感謝,

+0

哪個db使用? – Teja 2012-03-19 03:34:15

+0

您的產品表中沒有supplierID。您是否檢查過? – Teja 2012-03-19 03:35:03

+0

我使用了微軟公司的Northwind數據庫例子,我用產品中的選擇supplierID檢查它 - 它的工作!,對我有什麼想法? – manhnt 2012-03-19 03:43:01

回答

2
SELECT suppliers.supplierID,products.supplierID 
    FROM products 
    JOIN suppliers ON suppliers.supplierID = products.supplierID 

你應該明確地說哪個供應商ID,你需要對select語句

+0

阿哈好點。 – 2012-03-19 07:52:15

+0

這是一個很好的建議,但在這種情況下使用'*'不能成爲問題(當然不是問題背後的原因)。 – 2012-03-19 09:36:56

+0

@AndriyM:你說得對,我試過後SELECT * 從產品,供應商,之後,我運行SELECT * 從產品 JOIN供應商ON suppliers.supplierID = products.supplierID。這行得通 ?! – manhnt 2012-03-19 13:12:19

1

我唯一的猜測是基於這個錯誤,你的查詢是產品表中沒有SupplierId。我會先檢查模式。

+0

謝謝@Justin Pihony快速回復,我嘗試查詢SupplierId,從產品中選擇supplierID - 它工作正常, – manhnt 2012-03-19 03:40:15

1

我剛剛運行了nortwind db腳本並運行了查詢,它對我來說運行良好。

SELECT * 
FROM products 
INNER JOIN suppliers ON suppliers.supplierID = products.supplierID 

看看產品表,是supplierId嗎?如果是這樣,那麼確保你正在對正確的數據庫運行你的查詢。

你可以運行下面的查詢,它們是否成功運行?第三個查詢基本上是另一種方式的聯接。

select SupplierID from Suppliers 
go 
select SupplierID from Products 
go 
select * from Products p , Suppliers s 
where p.SupplierID = s.SupplierID 
0

,而不是SELECT *寫你想從兩個表

選擇像SELECT suppliers.supplierID,suppliers.name..etc

相應列兩個表包含供應商ID,這就是爲什麼錯誤出現。

0

衝突(強制)results..put列顯示檢查是否區分大小寫檢查數據庫和排序規則設置您正在使用區分大小寫的數據對象名稱。

0

你的代碼在選擇列表中選擇列時通過「select *」創建了amibiguity它沒有得到哪個表columsn需要選擇,因爲有兩個表使用後從子句..一件事別名表和使用在選擇列表中使用別名列名而不是簡單*

例如,

select a.* from test a inner join xyz b on a.id=b.id