ORA-00904内部加入的无效标识符

时间:2013-11-21 04:43:21

标签: sql oracle10g inner-join ora-00904

我正在尝试在我创建的ERD中的3个表之间进行内部联接。我已经使用这些表成功构建了3 - 3层子查询,当我研究这个问题时,我可以说在我的DDL中,我没有使用双引号,因此列不区分大小写。加入不是我强大的套房所以任何帮助将不胜感激。这是我提出的查询,以及它给我的错误。我在人们进行内部联接时看到的所有答案都使用了语法“INNER JOIN”,但我没有教过这个?我的方法还可以吗?

SQL> 
SELECT  regional_lot.location, 
        rental_agreement.vin, 
        rental_agreement.contract_ID 
FROM regional_lot, 
     rental_agreement 
WHERE regional_lot.regional_lot_id = vehicle1.regional_lot_ID 
  AND vehicle1.vin = rental_agreement.vin;


                    *
ERROR at line 1:
ORA-00904: "VEHICLE1"."VIN": invalid identifier

3 个答案:

答案 0 :(得分:2)

对于初学者,您的vehicle1列表中没有FROM

您应该尝试使用ANSI连接。首先,它们的可读性更高,并且您不会因连接条件而污染WHERE子句

SELECT regional_lot.location, rental_agreement.vin, rental_agreement.contract_ID
FROM rental_agreement
INNER JOIN vehicle1
    ON rental_agreement.vin = vehicle1.vin
INNER JOIN regional_lot
    ON vehicle1.regional_lot_ID = regional_lot.regional_lot_id;

答案 1 :(得分:1)

您需要将表vehicle1添加到查询中的“from”部分:

from regional_lot, rental_agreement, vehicle1

答案 2 :(得分:0)

您似乎错过了加入表格VEHICLE1。您还可以在表名上使用别名。 试试这样,

SELECT regional_lot.location,
       rental_agreement.vin,
       rental_agreement.contr act_ID
FROM   regional_lot a,
       rental_agreement b,
       vehicle1 c
WHERE  a.regional_lot_id = c.regional_lot_ID
AND    c.vin                 = b.vin;