Sql ORA-00904具有内部联接的标识符无效

Sql ORA-00904具有内部联接的标识符无效,sql,oracle10g,inner-join,ora-00904,Sql,Oracle10g,Inner Join,Ora 00904,我正在尝试在我创建的ERD中的3个表之间进行内部联接。我已经使用这些表成功地构建了3-3层子查询,当我研究这个问题时,我可以说在我的DDL中,我没有使用双引号,所以列不区分大小写。加入不是我的强项,因此任何帮助都将不胜感激。这是我输入的查询,以及它给我的错误。我看到的所有答案,当人们进行内部连接时,他们使用的语法是“内部连接”,但我没有被教过这个?我的方法还可以吗 SQL> SELECT regional_lot.location, rental_agreement.

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

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

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

from regional_lot, rental_agreement, vehicle1

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

from regional_lot, rental_agreement, vehicle1

首先,您的
FROM
列表中没有
vehicle1

你应该试一试。首先,它们更具可读性,并且不会污染带有连接条件的
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;

首先,您的
FROM
列表中没有
vehicle1

你应该试一试。首先,它们更具可读性,并且不会污染带有连接条件的
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;

看起来您没有加入表
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;

看起来您没有加入表
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;

好的,我试试看,我的印象是,如果您在语句的“选择”部分之后列出表中的信息,您只需在“FROM”中列出表。@MatthewClenney所有引用的表都需要通过
FROM
子句或通过join包含,这样您的语句才有效,而且更容易阅读!我唯一感到困惑的是,您似乎将“from”表源分散到整个查询中。你只是“在.FK上的内部连接?@MatthewClenney不确定你所说的展开是什么意思,但在条件下进行等式比较时左右操作数的顺序并不重要。@Phil,
从t1、t2、t3等开始的是交叉连接,而不是自然连接。好吧,我会尝试一下,我有这样的印象,如果要在语句的“选择”部分之后列出该表中的信息,则只需在“发件人”中列出表。@MatthewClenney所有引用的表都需要通过
FROM
子句或join包含在语句中,这样语句才有效,而且更容易阅读!我唯一感到困惑的是,您似乎将“from”表源分散到整个查询中。你只是“在.FK上进行内部连接”吗?@MatthewClenney不确定你所说的展开是什么意思,但在
条件下进行相等比较的左/右操作数的顺序无关紧要。@Phil,
来自t1、t2、t3等的操作数是交叉连接,而不是自然连接。