2014-01-06 1 views
0

안녕하세요 데이터베이스에 새로운 오전, 나는여러 테이블에서 레코드를 가져 오는 방법은 무엇입니까?

Table1 

    Column1  Column2 
    1    10 
    2    25 
    3    23 
    4    15 
    5    7 


    Table2 

    Column1  Column2 
    2    15 
    3    13 
    5    17 

    Table3 

    Column1  Column2 
    2    45 

결과 표

 Column1  Column2 
     1    10 
     2    45 
     3    13 
     4    15 
     5    17 
같은 기록을 가지고 있어야 내 테이블에있는 여러 테이블에서 레코드를 얻으려고 노력하지만, 다음이 선택에 따라입니다

내가 노력하고 있지만 아직 출력을 가지고 있지 않다. 어떤 도움이나 지시 사항이 도움이 될 것입니다.


UPDATE

내가 원하는 것은 표 2는이 일치하는 레코드가 결과 집합을 형성 제거하고 표 2 일치하는 레코드를 추가하고 같은 다음합니다 다음 일치하는 레코드가 포함되어있는 경우 다음 표에서 모든 행을 얻을 수있다 table3에 의해 반복됩니다.

+0

시도하세요? –

+0

@FathahRehmanP 아뇨 질문은 –

+0

당신은 _matching_ 정의 할 필요가 봐주세요을 업데이트했습니다. 모든 열은 소수를 포함합니까? Column2는 다른 테이블에서 Column1로 균등하게 나눌 수 있습니까? 동일한 Column1 값을 갖고 있습니까? – HABO

답변

2

코드 아래 사용하고 각 컬럼 1 값 오른쪽에 2 열의 최대 값을 할 수 있도록 Curiosity- @

select * from table1 where column1 not in (select column1 from table2 union select column1 from table3) 
union 
select * from table2 where column1 not in (select column1 from table3) 
union 
select * from table3 
1
select x.col1,max(x.col2) from (

select * from #t1 
union 
select * from #t2 
union 
select * from #t3 
)x 
group by x.col1 

see it in action

+0

이것은 최대 값을 얻는 것이 아니라 table2에서 일치하는 레코드를 모두 덮어 쓰고 결과 세트의 모든 일치하는 레코드를 덮어 쓰고 싶습니다. –

+0

최대 값을 얻으면 column2로 레코드 만 가져옵니다. 최대 값 thats 내가 뭘 원하는. 내가 당신이 그것을 이해할 수 있도록 질문을 업데이 트합시다 –

+2

나는 이것을 downvote하지 않았고, OP가 질문을 변경하기 전에 다른 사람들도 대답을하지 않았다고 제안한다. 그 당시에는 합리적이었습니다. – SQLMason

4
SELECT t1.column1, COALESCE(t3.column2,t2.column2,t1.column2) 
FROM t1 
LEFT JOIN t2 on t1.column1=t2.column1 
LEFT JOIN t3 on t1.column1=t3.column1