T_TS_CLS (1)
T_TS_STD (N)
example. 반 별로 카운트 NULL -> 0
select T1.cls, count(s.cls)
from T_TS_CLS T1
LEFT OUTER JOIN T_TS_STD T2
ON T1.cls = T2.cls
group by T1.cls
;
/**
먼저 합치고 정렬
*/
LEFT OUTER JOIN만 했을 때 모습 이것을 T1.cls로 grouping하면 위처럼
SELECT T1.*, IFNULL(T2.cnt, 0) AS cnt
FROM T_TS_CLS T1
LEFT OUTER JOIN (
SELECT cls
, COUNT(*) AS cnt
FROM T_TS_STD
GROUP BY cls
) T2 ON T1.cls = T2.cls;
/**
many를 정렬 후 cnt도 구해놓고 one으로 JOIN
*/
// 위에서 nested SELECT
SELECT cls
, COUNT(*) AS cnt
FROM T_TS_STD
GROUP BY cls;
/**
Separation of Concerns
*/
후자가 관심을 분리 해서 직관적이고 깔끔하고 확장성있는 SQL이다
RESULT