2011-07-03 3 views
0

orad를 사용하고 있는데 다른 문제가 발생했습니다.SQL 쿼리 - 앨리어싱 + 다른 마침표 + 다른 테이블

앨리어싱 - 같은 열을 두 번 사용하고 싶을 때!
우리는 col1, col2, col3을 가진 테이블 x를 가지고 있다고 가정합시다. Col1에는 고객의 연락처 (211,212,213 등)가 포함되어 있습니다.

그리고 다른 테이블 인 y이 있으며, col1, col4, col5가 있습니다. 두 테이블의 Col1은 동일합니다. Col4는 주 번호인지 보조 번호인지 보여줍니다.

y

(Col1,col4,col5) 
(211,Main,v) 
(212,Secondary,s) 
(213,Secondary,w) 

내가하고 싶은 다음과 같다 :!

SELECT col2, col1 as mainNumbet, col1 as secondNumber 
    FROM x 
WHERE mainNumber IN (SELECT col1 
         FROM y 
         WHERE col4 = 'main') 
    AND SecondNumber IN (SELECT col1 
          FROM y 
         WHERE col4 = "secondary") 

하지만 문제가 있음을 주장한다 ??

+4

작동합니다, 당신은 문제로 도움이 필요한 'Y'에 고유하지 않으면 - 귀하에게 전달 된 정보를 포함시키는 것이 도움이됩니다. 적어도 ORA 오류 번호처럼 ... 오라클 버전도 알지도 모르겠다. –

답변

1

코드에 몇 가지 문제가 있습니다.

SELECT x.col2, 
     CASE WHEN col4 ='main'  THEN x.col1 END AS mainNumber, 
     CASE WHEN col4 ='secondary' THEN x.col1 END AS secondNumber, 
FROM x 
    JOIN y 
    ON x.col1 = y.col1 
0

당신은 무엇 COL2 말을하지 않습니다,하지만 당신은 같은 테이블의 같은 행에서 같은 열 (COL1)를 복용하고 다른 할당하려고 :

아마도 이것은 당신이 원하는 것입니다 그것에 의미 (main_number 및 SECOND_NUMBER)

SELECT col2, col1 as mainNumbet, col1 as secondNumber 
    FROM x 

COL1, 그때에만 주 또는 보조 할 수 있으므로,이 작동한다 'Y'에 고유 한 경우

SELECT col2, col1 as number, (select col4 from y where y.col1=x.col1) type 
    FROM x 
,363,210

COL1은, 다음은 메인과 보조를 할 수있다, 그래서 뭔가 "문제가있는 상태"때이

SELECT col2, col1 as number, 
    (select col4 from y where y.col1=x.col1 and col4 = 'main' and rownum=1) m_ind, 
    (select col4 from y where y.col1=x.col1 and col4 = 'secondary' and rownum=1) s_ind 
FROM x 
관련 문제