【问题标题】:ORA-00904 INVALID IDENTIFIER with Inner JoinORA-00904 带有内部连接的无效标识符
【发布时间】:2013-11-21 04:43:20
【问题描述】:

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

【问题讨论】:

    标签: sql oracle10g inner-join ora-00904


    【解决方案1】:

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

    您应该尝试使用 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;
    

    【讨论】:

    • 好的,我会试一试,我的印象是,如果您在“选择”部分之后列出该表中的信息,则只需在“FROM”中列出表声明。
    • @MatthewClenney 所有引用的表都需要通过FROM 子句或通过连接包含
    • 所以你的陈述有效,而且更容易阅读!我唯一感到困惑的是,您似乎在整个查询中分散了“来自”表源。你只是“INNER JOIN ON .PK = .FK 吗?
    • @MatthewClenney 不知道你所说的 spread out 是什么意思,但是用于相等比较ON 条件的左/右操作数的顺序并不重要。
    • @Phil, FROM t1, t2, t3 等进行交叉连接,而不是自然连接。
    【解决方案2】:

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

    from regional_lot, rental_agreement, vehicle1
    

    【讨论】:

      【解决方案3】:

      您似乎错过了加入表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;
      

      【讨论】:

        猜你喜欢
        • 2020-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-27
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        相关资源
        最近更新 更多