2 INNER JOIN在一个SELECT语句中

时间:2013-03-18 07:27:15

标签: sql database select inner-join

我的数据库中有三个表:stockitem,供应商和城市。

我需要运行一个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(通过供应商表)

1 个答案:

答案 0 :(得分: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;