문제

나는 union 작업에 두 개의 테이블

SELECT ID_1,
       name_1,
       surname_1,
  FROM T_ONE
 UNION
SELECT ID_2,
       name_2,
       surname_2
  FROM TABLE_2

에 가입하고 싶어의 결과이 UNION 가동과 함께 다른 테이블 또는 모 TABLE_1.

어떻게 관리할 수 있는 이 새로운 테이블의 결과 UNION.

예를 들어 이전 UNION:

RIGHT JOIN TABLE_3
        ON TABLE_3.ID_3 = XXXXXXXXXXXXXXXXXXXX.ID_2

내가 정말 무엇인지 알지 못해 넣어 대신 XXXXXXXXXXXXXXXX 을 andle 새로운 테이블 생성 UNION.

도움이 되었습니까?

해결책

사용하는 파생된 테이블처럼"foo"여기,한 다음 다시 가고 그러나 당신이 원하는:

SELECT
    *
FROM
    TABLE_3
    LEFT JOIN
    (
    SELECT ID_1, name_1, surname_1, FROM T_ONE
    UNION --ALL would be more efficient if results do not overlap, as van's comment said
    SELECT ID_2, name_2, surname_2 FROM TABLE_2
    ) foo  ON TABLE_3.ID_3 = foo.ID_1

PS.를 사용 조인:적은 혼란 다음을 권합니다.

다른 팁

을 제공해야 합 가입하 모두에서 선택:

SELECT ID_1, name_1, surname_1, FROM T_ONE
RIGHT JOIN TABLE_3 ON TABLE_3.ID_3 = T_ONE.ID_1

UNION

SELECT ID_2, name_2, surname_2 FROM TABLE_2
RIGHT JOIN TABLE_3 ON TABLE_3.ID_3 = TABLE_2.ID_2

입니다.는 것을 잊지 않는 유니온을 제거 중복,그래서 당신이 원하는 경우 중복 포함,uyse 모든 동맹

SELECT ID_1, name_1, surname_1, FROM T_ONE

from
(SELECT ID_1, name_1, surname_1, FROM T_ONE
UNION 
SELECT ID_2, name_2, surname_2 FROM TABLE_2 ) foo

left join TABLE_3 

ON TABLE_3.ID_3 =foo.ID_2

을 확장하 gbn 의 대답에 대해 위에 있는 사람이 물었다.여기에 그것을 어떻게 함께 연합의 첫 번째 부분으로 왼쪽입니다.

SELECT table3.phone, foo.fname, foo.lname, foo.email
FROM
(SELECT table1.fname,table1.lname,table1.email
    FROM table1
UNION
SELECT table2.fname,table2.lname,table2.email
    FROM table2
) foo
LEFT JOIN table3
ON foo.lname = table3.lname
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top