Oracle 有人能告诉我为什么我得到一个错误的ora-00904吗?
这是我得到的错误: ORA-00904:“L.”“L_价格”:无效标识符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
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