MySQL 에서 유형별로 개수를 가져오고 싶은데 단순히 COUNT 함수로 데이터를 조회하면 전체 개수만을 가져옵니다.
유형별로 개수를 알고 싶을 떄는 컬럼의 데이터를 그룹화 할 수 있는 GROUP BY를 이용합니다.
둘을 잘 기억하고 작성해야 하며
WHERE는 그룹화하기 전의 조건이고 HAVING은 그룹화 후의 조건입니다.
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼;
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼;
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼 HAVING 조건식;
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화할 컬럼 HAVING 조건식;
SELECT 컬럼 FROM 테이블 WHERE 조건식
GROUP BY 그룹화할 커럶 HAVING 조건식 ORDER BY 컬럼;
SELECT info.id, s.account, m.manager_name
FROM sellers_informations as info
INNER JOIN sellers AS s ON info.seller_id = s.id
LEFT JOIN managers AS m ON info.seller_id = m.seller_id
sellers_informations
테이블에서 sellers
테이블과 managers
테이블을 각각 INNER JOIN, LEFT JOIN을 했습니다.
결과는 위와 같이 나왔는데 그 이유는 managers
테이블에서 같은 seller_id
로 두 개가 참조되고 있기 때문입니다.
이 것을 하나의 row로 나타내기 위해서 GROUP BY를 사용하면
SELECT info.id, s.account, m.manager_name
FROM sellers_informations as info
INNER JOIN sellers AS s ON info.seller_id = s.id
LEFT JOIN managers AS m ON info.seller_id = m.seller_id
GROUP BY info.id
sellers_informations
의 id값을 기준으로 같은 것은 그룹화되어 나타납니다.