쿼리 모음 1 - count 시 0 포함, depth join, group_concat

  • count 시 0 포함하는 쿼리
    • 호출하고 싶은 모든 기준 정보를 가지고 있는 테이블 A카운트를 가져올 테이블 B를 join
    • 물론 테이블 A와 테이블 B는 같은 테이블일 수 있음

      SELECT a.기준필드, COUNT(b.기준필드)
      FROM 테이블A a
      LEFT OUTER JOIN
                 (SELECT * FROM 테이블B WHERE 조건) b
      ON (a.기준필드 = b.기준필드)
      WHERE a 테이블 조건
      GROUP BY a.기준필드
      ORDER BY a 테이블 조건

 

  • depth join 
    • depth를 가진 데이터는 inner join으로 데이터를 가져옴
    • id = 1, depth = 1, parent_id = null
      id = 2, depth = 2, parent_id = 1
      id = 3, depth = 3, parent_id = 2
      id = 4, depth = 3, parent_id = 2

      SELECT one.id, two.id, three.id
      FROM 테이블 one
      INNER JOIN 테이블 two ON one.id = two.parent_id
      INNER JOIN 테이블 three ON two.id = three.parent_id

 

  • group concat
    • group by는 기준필드 및 집계함수만 select가 가능하지만
      group concat을 쓰면 다른 필드의 데이터 집합을 횡렬로 출력 가능
       
      SELECT 기준필드, count(기준필드), GROUP_CONCAT(일반필드)
      FROM 테이블
      WHERE
      GROUP BY 기준필드

 

    • group concat은 join + group by 최상위 depth와도 사용 가능하다.
    • -> 조인한 하위 테이블들의 데이터가 횡렬로 출력됨  

 

 

 

댓글을 작성해보세요.