복붙노트

[SQL] 어떻게 하나 개의 출력으로 두 개의 테이블에서 열을 병합 할 수 있습니다?

SQL

어떻게 하나 개의 출력으로 두 개의 테이블에서 열을 병합 할 수 있습니다?

나는 유사한 정보를 가진 두 개의 테이블이있다. 이제 items_a 및 items_b 그들을 부르 자. 그들은 하나 여야합니다,하지만 그들은 서로 다른 소스에서 오는, 그래서 그들은하지 않습니다. 나는 두 개의 테이블을 풀에 가입하면, 일부 행은 하나 또는 두 테이블의 데이터로 끝낸다. 두 테이블의 열 중 하나는 CATEGORY_ID된다. 나는 CATEGORY_ID를 사용하여 범주 테이블과 결합 테이블을 교차하고 싶습니다. 그러나, 나는 지금이 CATEGORY_ID 열 (items_a에서 하나 items_b에서 하나)가 있습니다. 하나에 두 개의 열을 병합하는 방법이 있나요?

나는이 너무 질문을 혼동하지 않습니다 바랍니다.

해결법

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

    1.쿼리에 열을 지정하면 트릭을 수행해야합니다

    쿼리에 열을 지정하면 트릭을 수행해야합니다

    select a.col1, b.col2, a.col3, b.col4, a.category_id 
    from items_a a, items_b b 
    where a.category_id = b.category_id
    

    당신이 원하는 열을 따기에 관해서 트릭을해야한다.

    일부 데이터가 items_a 만하고 일부 데이터가 items_b 만 있다는 사실을 해결하기 위해, 당신은 할 수있을 것입니다 :

    select 
      coalesce(a.col1, b.col1) as col1, 
      coalesce(a.col2, b.col2) as col2,
      coalesce(a.col3, b.col3) as col3,
      a.category_id
    from items_a a, items_b b
    where a.category_id = b.category_id
    

    병합 기능 그렇지 않으면 얻을 것이다, 그래서 COL1가 null 이외의 경우,이 것을 사용합니다 각 행에 대해, COL2 등의 값을 첫 번째 null이 아닌 값을 반환합니다

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

    2.나는 당신이하고 싶은 것은 두 테이블의 UNION이라고 생각한다.

    나는 당신이하고 싶은 것은 두 테이블의 UNION이라고 생각한다.

    두 테이블은 다음 같은 열이있는 경우 당신은 할 수 있습니다

    SELECT category_id, col1, col2, col3
      FROM items_a
    UNION 
    SELECT category_id, col1, col2, col3 
      FROM items_b
    

    그 밖에, 당신은 같은 일을해야 할 수도 있습니다

    SELECT category_id, col1, col2, col3
      FROM items_a 
    UNION 
    SELECT category_id, col_1 as col1, col_2 as col2, col_3 as col3
      FROM items_b
    
  3. ==============================

    3.

    SELECT col1,
      col2
    FROM
      (SELECT rownum X,col_table1 FROM table1) T1
    INNER JOIN
      (SELECT rownum Y, col_table2 FROM table2) T2
    ON T1.X=T2.Y;
    
  4. ==============================

    4.나는 작은 차이로 비슷한 문제가 있었다 : 일부 a.category_id는 B에없는 일부 b.category_id는에 있지 않습니다. 이 문제를 해결하기 위해 단지 beny23에서 excelent 대답을 적용

    나는 작은 차이로 비슷한 문제가 있었다 : 일부 a.category_id는 B에없는 일부 b.category_id는에 있지 않습니다. 이 문제를 해결하기 위해 단지 beny23에서 excelent 대답을 적용

    select a.col1, b.col2, a.col3, b.col4, a.category_id 
    from items_a a
    LEFT OUTER JOIN
    items_b b 
    on a.category_id = b.category_id
    

    이 사람을 도움이되기를 바랍니다. 문안 인사.

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

    5.때 당신은 세 개의 테이블 이상, 단지 노동 조합 및 왼쪽 외부 조인을 추가 할 수 있습니다 :

    때 당신은 세 개의 테이블 이상, 단지 노동 조합 및 왼쪽 외부 조인을 추가 할 수 있습니다 :

    select a.col1, b.col2, a.col3, b.col4, a.category_id 
    from 
    (
        select category_id from a
        union
        select category_id from b
    ) as c
    left outer join a on a.category_id = c.category_id
    left outer join b on b.category_id = c.category_id
    
  6. from https://stackoverflow.com/questions/2360396/how-can-i-merge-the-columns-from-two-tables-into-one-output by cc-by-sa and MIT license