Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 有人能告诉我为什么我得到一个错误的ora-00904吗?_Oracle - Fatal编程技术网

Oracle 有人能告诉我为什么我得到一个错误的ora-00904吗?

Oracle 有人能告诉我为什么我得到一个错误的ora-00904吗?,oracle,Oracle,这是我得到的错误: ORA-00904:“L.”“L_价格”:无效标识符 90400000-“%s:无效的标识符 您重新定义了表名,因此表L在更高的选择级别不再可用 您应该使用已分配给与列L_PRICE相关的select的正确(最后一个)(ILP)表名 或者您的表中没有L_PRICE列 SELECT C.C_CODE, I.INV_NUM, I.INV_DATE, P.DESCRIPT, L.L_UNITS, L.L_PRICE FROM CUSTOMER C JOIN

这是我得到的错误:

ORA-00904:“L.”“L_价格”:无效标识符
90400000-“%s:无效的标识符


您重新定义了表名,因此表L在更高的选择级别不再可用 您应该使用已分配给与列L_PRICE相关的select的正确(最后一个)(ILP)表名

或者您的表中没有L_PRICE列

SELECT 
    C.C_CODE, I.INV_NUM, I.INV_DATE, P.DESCRIPT, L.L_UNITS, L.L_PRICE
FROM 
    CUSTOMER C 
JOIN 
    (SELECT * 
     FROM INVOICE I
     JOIN 
         (SELECT * 
          FROM LINE L
          JOIN (SELECT * FROM PRODUCT) P ON P.P_CODE = L.P_CODE) LP ON I.INV_NUM = LP.INV_NUM
          ORDER BY I.INV_NUM DESC) ILP ON C.C_CODE = ILP.C_CODE
ORDER BY 
    C.C_CODE;

表别名
L
仅在子查询中具有作用域

子查询的别名为
ILP
;请使用:

    SELECT 
        C.C_CODE, I.INV_NUM, I.INV_DATE, P.DESCRIPT, L.L_UNITS, L.L_PRICE
    FROM 
        CUSTOMER C 
    JOIN 
        (SELECT * 
             FROM INVOICE I
             JOIN 
                    (SELECT * 
                      FROM LINE L
                      JOIN (SELECT * FROM PRODUCT) P ON P.P_CODE = L.P_CODE
                    ) LP ON I.INV_NUM = LP.INV_NUM
                  ORDER BY I.INV_NUM DESC
        ) ILP ON C.C_CODE = ILP.C_CODE
    ORDER BY 
        C.C_CODE;

您是否考虑过缩进select语句以使其更具可读性对不起,我是新来的堆栈溢出不知道如何edit@P_S.您已(通过联接)重命名原始表,因此您必须使用此重命名的表名来标识列。.从代码看,这似乎是ILP,但已多次重命名该表。.(可能您也需要解释列)
SELECT ..., ILP.L_STATUS