2012-03-12 86 views
2

我有以下SQL語句返回「非唯一表/別名」。我相當肯定我在這裏只是錯過了一些明顯的東西,可能不夠詳細,因爲它是StockSuppliersStock的常用字段名稱。主鍵Stock,在SuppliersStock我正在變厚嗎? MySQL:LEFT JOIN上的「不唯一表/別名」

SELECT Stock.BuyingPrice, SuppliersStock.StockID, SuppliersStock.Quantity 
FROM Stock 
LEFT JOIN Stock on Stock.StockID = SuppliersStock.StockID 
WHERE Stock.StockID = <some-integer /> 

Stock表中有關於股票的具體信息外鍵,Suppliers對供應商信息和SuppliersStock有新貨一起StockSuppliers外鍵引用信息的訂單。

我想要做的就是返回BuyingPrice(從Stock),StockIDQuantity(從SuppliersStock)領域,所以我可以產生的費用清單新股訂貨。

聲明:我知道,關於SQL的另一個問題是加入。不要傷害我!我谷歌搜索,我已經搜索,但我有點困惑,我誠實地試圖尋找一個類似的問題,以更多地瞭解我可以做些什麼來解決這個問題,但要成爲王牌。請幫忙?

+2

嘛,你使用的是表'庫存'兩次沒有給他們一個別名,當然它會把這個錯誤給你。此外,您在連接條件中使用'SuppliersStock.StockID',但您沒有使用該表 – Lamak 2012-03-12 13:51:55

+1

有趣的是,標題中問題的答案是「是的,你正在變厚」:) – Romain 2012-03-12 13:53:06

回答

5

您似乎跳過別名SuppliersStock,或者它是一個不同的表:

/* If SuppliersStock is a different table */ 
SELECT Stock.BuyingPrice, SuppliersStock.StockID, SuppliersStock.Quantity 
FROM Stock 
LEFT JOIN SuppliersStock on Stock.StockID = SuppliersStock.StockID 
WHERE Stock.StockID = <some-integer /> 

/* If SuppliersStock is the same table, needing an alias */ 
SELECT Stock.BuyingPrice, SuppliersStock.StockID, SuppliersStock.Quantity 
FROM Stock 
LEFT JOIN Stock AS SuppliersStock on Stock.StockID = SuppliersStock.StockID 
WHERE Stock.StockID = <some-integer /> 
+0

謝謝Michael,並且是的SuppliersStock是一個不同的表格。猜猜我畢竟是厚實的! :) – Bendihossan 2012-03-12 13:59:35

9

您的'from'和'left join'都是指同一張表'Stock'。更改其中的一個參考「SupplierStock」

0

的問題是你與Stock代替SuppliersStock加入Stock,所以當你說Stock.StockID MySQL不知道哪兩個是你指的是。

我猜你想做到這一點:

SELECT Stock.BuyingPrice, SuppliersStock.StockID, SuppliersStock.Quantity 
FROM Stock 
LEFT JOIN SuppliersStock on Stock.StockID = SuppliersStock.StockID 
WHERE Stock.StockID = <some-integer /> 
0

你在自己加入的股票,這意味着查詢不知道哪隻股票你引用。 如果這是你想要的東西,做出連接表的別名:JOIN Stock AS SuppliersStock