2017-12-19 7 views
0

나는 마지막 1 행 데이터 만 얻으려면 Oracle 쿼리가 있습니다.오라클은 여러 테이블에서 마지막 1 행 데이터 만 가져옵니다. 쿼리

SELECT 
R.FORM_NO, 
R.PART_NO, 
L.L_FORM_NO, 
L.HDR_ID, 
L.CP_ID_SLC_FORM_NO, 
S.FORM_NO, 
S.PART_NO, 
S.CP_ID 
FROM 
WA_T_QC_REVISION R, 
WA_T_QC_REVISION_LIST L, 
WA_T_QC_CP_SELECTED S 
WHERE 
R.FORM_NO = L.HDR_ID AND 
S.FORM_NO = L.CP_ID_SLC_FORM_NO AND 
R.PART_NO = 'PA03670-B501' 
ORDER BY R.FORM_NO DESC 

내가 이렇게 될 쿼리를 추가하려고하면 내가

ORA-00918: column ambiguously defined 

는 내가 원하는 것은 테이블 만 지난 1 개 행 데이터를 얻을 수있는 오류가 발생했습니다

SELECT * FROM(
SELECT 
R.FORM_NO, 
R.PART_NO, 
L.L_FORM_NO, 
L.HDR_ID, 
L.CP_ID_SLC_FORM_NO, 
S.FORM_NO, 
S.PART_NO, 
S.CP_ID 
FROM 
WA_T_QC_REVISION R, 
WA_T_QC_REVISION_LIST L, 
WA_T_QC_CP_SELECTED S 
WHERE 
R.FORM_NO = L.HDR_ID AND 
S.FORM_NO = L.CP_ID_SLC_FORM_NO AND 
R.PART_NO = 'PA03670-B501' 
ORDER BY R.FORM_NO DESC) 
WHERE ROWNUM <= 1 

.

답변

1

여기서 바로 해결할 수있는 것은 동일한 이름을 가진 열을 더 이상 같은 이름을 갖지 않게 별칭을 지정하는 것입니다.

SELECT * FROM (
    SELECT 
     R.FORM_NO AS FORM_NO_R, 
     R.PART_NO AS PART_NO_R, 
     L.L_FORM_NO, 
     L.HDR_ID, 
     L.CP_ID_SLC_FORM_NO, 
     S.FORM_NO AS FORM_NO_S, 
     S.PART_NO AS PART_ON_S, 
     S.CP_ID 
    FROM WA_T_QC_REVISION R 
    INNER JOIN WA_T_QC_REVISION_LIST L 
     ON R.FORM_NO = L.HDR_ID 
    INNER JOIN WA_T_QC_CP_SELECTED S 
     ON S.FORM_NO = L.CP_ID_SLC_FORM_NO 
    WHERE 
     R.PART_NO = 'PA03670-B501' 
    ORDER BY R.FORM_NO DESC 
) 
WHERE ROWNUM <= 1 

또한 암시 적 조인을 명시 적 내부 조인으로 바꿨습니다. 공식 조인 구문을 사용하는 것이 쿼리를 작성하는 데 선호되는 방법이며 25 년 이상 동안 계속되었습니다.