-1

我的数据库中有三个表:stockitem、supplier 和 city。

我需要运行一个 SQL 查询来选择股票 id ( stkid)、股票名称 ( stkname) 和股票 id 供应商的相关城市名称(用 链接suppid)。

为了做到这一点,我被告知我需要运行 2 个INNER JOIN语句,这些语句应该链接suppid来自 stockitem 表(外键)和供应商表(主键)的两个属性。

同样,我需要对citycode表供应商 (FK) 和城市 (PK) 中的 执行相同操作。

这是我所拥有的:

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从 city 表(通过供应商表)引用的 。

4

1 回答 1

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;
于 2013-03-18T07:42:05.513 回答