2012-07-29 2 views
-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를 사용하고

Ambiguous Columns Defined

합니다.

답변

6

분명히 선택 목록에있는 하나 이상의 (또는 그 이상) 열 이름이 FROM 목록의 둘 이상의 표에 존재합니다.

당신은 그것에서오고 테이블과 SELECT 목록에 모든 열을 접두사 필요가

+0

흥미롭게도 OP는 조인 절의 열 이름 앞에 접두사를 붙였습니다. 프로젝션에는 포함되지 않았습니다. – APC

+0

@ APC : 그래, 나도 알아 챘다. 이상한 이름 짓기 "습관" –

1

선택 쿼리의 모든 열 앞에 표 이름입니다. 모호한 열은 하나의 SELECT 문에 동일한 이름의 열이 두 개 이상 있음을 의미합니다.

1

모든 prefgixing, 대신 시도 (항상 관계없이 ambigous 경우 사실하려면 것도 좋은 방법입니다) (당신이 당신의 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 
,174의 암말 자격을 갖춘 이름을 추측했다

INCOME.RECEIVE_DOC_PORTION.PORTION_AMOUNT 

수 있습니다하지만 당신은 쉽게 그것을 해석 할 수 있어야합니다.

도움이 되길 바랍니다 ...