我的数据库中有三个表: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行都返回其相对属性stkid
,stkname
和从城市表引用的cityname
(通过供应商表)
答案 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;