0

我正在尝试在我创建的 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
4

3 回答 3

3

对于初学者,您vehicle1FROM列表中没有。

你应该试试 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;
于 2013-11-21T04:49:28.313 回答
1

您在查询中将表 vehicle1 添加到“来自”部分:

from regional_lot, rental_agreement, vehicle1
于 2013-11-21T04:47:59.820 回答
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;
于 2013-11-21T04:52:28.703 回答