-1

これは私のSQLコマンドです:

select INCOME_TYPE_ID,
       REGION_CODE,
       FIN_YEAR_CODE,
       PORTION_AMOUNT
  from INCOME.INCOME_TYPE, 
       COMMON.REGION, 
       INCOME.RECEIVE_DOC_PORTION, 
       INCOME.ASSESS_ORDER_ITEM, 
       ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC, 
       ACCOUNTING.VOUCHER_ITEM, 
       ACCOUNTING.VOUCHER, 
       ACCOUNTING.FIN_YEAR
 where INCOME.RECEIVE_DOC_PORTION.ASSESS_ORDER_ITEM_ID = INCOME.ASSESS_ORDER_ITEM.ASSESS_ORDER_ITEM_ID
   and INCOME.ASSESS_ORDER_ITEM.INCOME_TYPE_ID=INCOME.INCOME_TYPE.INCOME_TYPE_ID
   and INCOME.RECEIVE_DOC_PORTION.RECEIVE_DOC_PORTION_ID = ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC.RECEIVE_DOC_PORTION_ID
   and ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC.VOUCHER_ITEM_ID = ACCOUNTING.VOUCHER_ITEM.VOUCHER_ITEM_ID
   and ACCOUNTING.VOUCHER_ITEM.VOUCHER_ID = ACCOUNTING.VOUCHER.VOUCHER_ID
   and ACCOUNTING.VOUCHER.REGION_CODE = COMMON.REGION.REGION_CODE
   and ACCOUNTING.VOUCHER.FIN_YEAR_CODE = ACCOUNTING.FIN_YEAR.FIN_YEAR_CODE

そして、私はこのエラーを受け取りました:

定義されたあいまいな列

SQL Developer を Oracle クライアントとして使用しています。

4

3 に答える 3

6

明らかに、選択リストの 1 つ (または複数) の列名が FROM リストの複数のテーブルに存在します。

SELECT リストのすべての列に、元のテーブルをプレフィックスとして付ける必要があります (あいまいであるかどうかに関係なく、常にそうするのも良い方法です)。

于 2012-07-29T08:18:57.700 に答える
1

代わりに、選択したすべての列に完全修飾名を前に付けて、これを試してください ( の他の場所で行ったようにSELECT)。

select INCOME.INCOME_TYPE.INCOME_TYPE_ID,
       COMMON.REGION.REGION_CODE,
       ACCOUNTING.FIN_YEAR.FIN_YEAR_CODE,
       ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC.PORTION_AMOUNT
  from INCOME.INCOME_TYPE, 
       COMMON.REGION, 
       INCOME.RECEIVE_DOC_PORTION, 
       INCOME.ASSESS_ORDER_ITEM, 
       ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC, 
       ACCOUNTING.VOUCHER_ITEM, 
       ACCOUNTING.VOUCHER, 
       ACCOUNTING.FIN_YEAR
 where INCOME.RECEIVE_DOC_PORTION.ASSESS_ORDER_ITEM_ID = INCOME.ASSESS_ORDER_ITEM.ASSESS_ORDER_ITEM_ID
   and INCOME.ASSESS_ORDER_ITEM.INCOME_TYPE_ID = INCOME.INCOME_TYPE.INCOME_TYPE_ID
   and INCOME.RECEIVE_DOC_PORTION.RECEIVE_DOC_PORTION_ID = ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC.RECEIVE_DOC_PORTION_ID
   and ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC.VOUCHER_ITEM_ID = ACCOUNTING.VOUCHER_ITEM.VOUCHER_ITEM_ID
   and ACCOUNTING.VOUCHER_ITEM.VOUCHER_ID = ACCOUNTING.VOUCHER.VOUCHER_ID
   and ACCOUNTING.VOUCHER.REGION_CODE = COMMON.REGION.REGION_CODE
   and ACCOUNTING.VOUCHER.FIN_YEAR_CODE = ACCOUNTING.FIN_YEAR.FIN_YEAR_CODE

完全修飾名を推測する必要がありました

ACCOUNTING.VOUCHER_ITEM_RECEIVE_DOC.PORTION_AMOUNT

それは可能性があります

INCOME.RECEIVE_DOC_PORTION.PORTION_AMOUNT

しかし、あなたはそれを簡単に解決できるはずです。

それが役に立てば幸い...

于 2012-07-30T10:49:55.640 に答える
1

選択クエリのすべての列の前にテーブルの名前を記載します。あいまいな列は、SELECT ステートメントの 1 つに同じ名前の列が複数あることを意味します。

于 2012-07-29T08:18:35.333 に答える