2016-10-28 12 views
0

私はこのORA-00918を取得し続けます:列があいまいに定義されたエラーと私は何を間違っているのか分かりません。どんな助けもありがとうございますここに私のコードです:ORA-00918:列があいまいに定義され続ける。非常に混乱しています

select CUSTOMER.CUS_CODE as CUS_CODE, 
CUSTOMER.CUS_AREACODE as CUS_AREACODE, 
INVOICE.INV_NUMBER as INV_NUMBER, 
SUM(LINE.LINE_UNITS*LINE.LINE_PRICE) as Amount 
from LINE LINE, 
INVOICE INVOICE, 
CUSTOMER CUSTOMER 
where CUSTOMER.CUS_CODE=INVOICE.CUS_CODE 
and INVOICE.INV_NUMBER=LINE.INV_NUMBER 
group by CUS_AREACODE, CUS_CODE 
+1

適切で明示的な 'JOIN'構文を使用する方法を学んでください。また、私はその質問が何であるか分かりません。クエリには厳密に2つの非準拠の列参照がありますので、その答えは明らかです。 –

+1

「少なくともCUS_CODE」という名前の列を持つテーブルが2つあります。 'CUS_CODEで注文する 'と言うとき、どのテーブルの' CUS_CODE'を意味しますか? – mustaccio

+0

@mustaccio私はCUSTOMERテーブルを使用しようとしています。もし私が 'CUS_AREACODE、CUSTOMER.CUS_CODEによってグループ化するなら、それはまだ私にそのエラーを与えます。 –

答えて

1

私は強くそれがGROUP BYと思われます。まず、合計で使用されていないすべてのフィールドを追加する必要があります。次に、GROUP BYのすべてのフィールドにテーブルまたはエイリアスを指定する必要があります。ステートメントを

SELECT c.CUS_CODE as CUS_CODE, 
     c.CUS_AREACODE as CUS_AREACODE, 
     i.INV_NUMBER as INV_NUMBER, 
     SUM(l.LINE_UNITS * l.LINE_PRICE) as Amount 
    FROM CUSTOMER c 
    INNER JOIN INVOICE i 
    ON INVOICE.CUS_CODE = CUSTOMER.CUS_CODE 
    INNER JOIN LINE l 
    ON l.INV_NUMBER = i.INV_NUMBER 
GROUP BY c.CUS_CODE, 
      c.CUS_AREACODE, 
      i.INV_NUMBER 

に変更し、取得できないかどうかを確認してください。私はエイリアスを変更して、短くて簡単に理解できるようにし、古い暗黙的な結合の代わりにANSI形式の結合に変更しました。

幸運のベスト。

関連する問題