2013-03-18 91 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