2017-02-12 17 views
-1
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; 

これは私が取得エラーです:誰でもora-00904のエラーが表示される理由を教えていただけますか?

ORA-00904: "L" "L_PRICE":無効な識別子
00904. 00000 - 「%sの:無効な識別子

+0

は、あなたはそれが少し読みやすくするために、SELECT文をインデントについて考えている私は、スタックオーバーフローに新しいです –

+0

申し訳ありませんが –

答えて

1

テーブルLを上の選択レベルで利用できないようにテーブル名を再調整しました 列に関連する選択に割り当てた正しい(最後の)(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; 
+0

を編集する方法を知っていたしませんでした私はL_PRICEとILPの列を持っているではありませんワーキング。 –

+0

@ P_S。あなたは(JOINによって)元のテーブルの名前を変更したので、列を識別するためにこの名前の変更されたテーブル名を使用する必要があります..あなたのコードを見てみるとILPですが、テーブルを数回改名しました。 ) – scaisEdge

0

表の別名LにL_PRICE列を持っていません。

サブクエリには、別名ILPがあります。それを使用します。

SELECT ..., ILP.L_STATUS 
+0

ILPが機能していません。 –

関連する問題