2013-03-18 93 views
-1

我的數據庫中有三張表:stockitem,supplier和city。2 INNER JOINs在一條SELECT語句中

我需要運行SQL查詢來選擇股票ID(stkid),股票名稱(stkname)和股票ID的供應商的相關城市名稱(與suppid鏈接)。

爲了做到這一點,我被告知需要運行2 INNER JOIN聲明,這些聲明應該鏈接來自stockitem表(外鍵)和供應商表(主鍵)的兩個suppid屬性。

同樣,我需要對錶供應商(FK)和城市(PK)中的citycode做同樣的事情。

這是我有:

SELECT  I.stkid  , I.stkname , C.cityname "Supplier Location" 
FROM  stockitem I 

-- inner join stockitem <-> supplier 
INNER JOIN supplier S 
ON   I.suppid = S.suppid 

-- inner join supplier <-> city 
INNER JOIN city C 
ON   S.citycode = C.citycode 

ORDER BY stkid ASC; 

任何幫助將是真棒。

謝謝!

編輯:對不起,完全忘了發送輸出。這是我不斷收到的錯誤。

SELECT  I.stkid  , I.stkname , C.cityname "Supplier Location" 
           * 
Error at line 1: 
ORA-00904: "C"."CITYNAME": invalid identifier 

INNER JOIN supplier S 
* 
Error at line 1: 
ORA-00900: invalid SQL statement 

INNER JOIN city C 
* 
Error at line 1: 
ORA-00900: invalid SQL statement 

我所期待的只是我所有的stockitem行與他們相對的屬性,stkidstkname和從城市表(通過供應商表)引用的cityname返回。

+0

什麼是你的問題?你發佈的查詢有什麼問題? – 2013-03-18 07:29:42

+0

選擇有什麼問題?你有錯誤嗎?錯誤的結果?如果你得到了錯誤的結果,你期望的是什麼? – 2013-03-18 07:29:46

+0

您的查詢有什麼問題? – 2013-03-18 07:31:11

回答

1

看起來Oracle似乎將您的查詢視爲3個不同的查詢。儘量消除空行和類似行爲。

如果它不工作,你可以只使用隱式的內部連接,像

SELECT  I.stkid  , I.stkname , C.cityname "Supplier Location" 
FROM  stockitem I, supplier S , city C 
where  I.suppid = S.suppid and S.citycode = C.citycode 
ORDER BY stkid ASC; 
+2

我剛剛刪除了評論和空白行,它工作得很好......不知道空白行/評論影響了查詢。謝謝你的幫助!!! – alexcu 2013-03-18 07:49:51