복붙노트

[SQL] 2005 SQL - 열은 여러 번 지정

SQL

2005 SQL - 열은 여러 번 지정

나는 SQL 2005에서이 쿼리를 실행하려고 다음과 같은 오류가 점점 오전 :

    SELECT tb.*
    FROM (
        SELECT * 
        FROM vCodesWithPEs INNER JOIN vDeriveAvailabilityFromPE 
        ON vCodesWithPEs.PROD_PERM = vDeriveAvailabilityFromPE.PEID 
        INNER JOIN PE_PDP ON vCodesWithPEs.PROD_PERM = PE_PDP.PEID
    ) AS tb;

Error: The column 'PEID' was specified multiple times for 'tb'.

나는 SQL로 새로운 오전. 귀하의 조언에 미리 감사드립니다.

위치.

해결법

  1. ==============================

    1.문제는, 언급 한 바와 같이, 두 개의 테이블에서 PEID를 선택하는 것입니다,이 솔루션은 예를 들어, 당신이 원하는 않는 PEID 지정하는 것입니다

    문제는, 언급 한 바와 같이, 두 개의 테이블에서 PEID를 선택하는 것입니다,이 솔루션은 예를 들어, 당신이 원하는 않는 PEID 지정하는 것입니다

     SELECT tb.*
        FROM (
            SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
            FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
            ON tb1.PROD_PERM = tb2.PEID 
            INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
        ) AS tb;
    

    외부 SELECT 완전히 불필요한 코멘트 아웃 크리스 라이블리 영리 점으로, 그 외에. 다음은 첫 번째와 완전히 동일합니다.

            SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
            FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
            ON tb1.PROD_PERM = tb2.PEID 
            INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
    

    또는

            SELECT * 
            FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
            ON tb1.PROD_PERM = tb2.PEID 
            INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
    

    하지만 가능하면 SELECT *를 사용하여 피해주십시오. 그것은 당신이 입력을 저장하는 대화 형 쿼리를 수행하는 동안 작동하지만 생산 코드를 사용하지 않을 수 있습니다.

  2. ==============================

    2.vDeriveAvailabilityFromPE 및 PE_PDP : 당신처럼 보이는 두 테이블의 열 PEID 있습니다. SELECT 문은 모두 선택을 시도하고 중복 된 열 이름에 대한 오류를 제공합니다.

    vDeriveAvailabilityFromPE 및 PE_PDP : 당신처럼 보이는 두 테이블의 열 PEID 있습니다. SELECT 문은 모두 선택을 시도하고 중복 된 열 이름에 대한 오류를 제공합니다.

  3. ==============================

    3.당신은 세 개의 테이블을 조인, 출력 (*)의 모든 열에서 찾고 있습니다.

    당신은 세 개의 테이블을 조인, 출력 (*)의 모든 열에서 찾고 있습니다.

    테이블은 당신이 다른 것을 같은 별칭으로 할거야 공통 열 이름 PEID를 가질 것 같습니다.

    해결 방법 : 하위 쿼리에서 * 사용하지만, 명시 적으로 두 번 이상 나타나는 열 이름을 앨리어싱, 당신이보고 싶은 각 열을 선택하지 마십시오.

  4. ==============================

    4.대신 모든 필드를 수집 식별 *를 사용하는 명시 적으로 쿼리를 다시 작성 원하는 열 이름을 지정합니다. 그런 식으로 혼란은 일어나지 않는다.

    대신 모든 필드를 수집 식별 *를 사용하는 명시 적으로 쿼리를 다시 작성 원하는 열 이름을 지정합니다. 그런 식으로 혼란은 일어나지 않는다.

  5. ==============================

    5.단지 반복, 그것은 나를 위해 일하는 열에 대한 새 별명 이름을 지정합니다 .....

    단지 반복, 그것은 나를 위해 일하는 열에 대한 새 별명 이름을 지정합니다 .....

  6. from https://stackoverflow.com/questions/1058606/sql-2005-the-column-was-specified-multiple-times by cc-by-sa and MIT license