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