예제를 실행해 확인해 보죠.
코드 8-17
SELECT a.continent, COUNT(*) 전체건수, COUNT(b.name) 도시건수
FROM country a
INNER JOIN city b
GROUP BY a.continent;
실행결과
코드 8-17은 코드 8-12를 카티전 곱 구문으로 바꾼 쿼리입니다. 결과를 보면 총 7건의 데이터가 조회됐습니다. 그런데 COUNT(*)가 반환한 전체 건수의 값을 보면 코드 8-12의 실행결과보다 숫자가 매우 커졌습니다. 어떻게 이런 값이 나왔을까요?
남극에 해당하는 ‘Antarctica’ 건을 보죠. 코드 8-12에서는 5가 나왔는데, 이는 country 테이블에서 대륙명이 ‘Antarctica’인 데이터가 5건이기 때문이죠. 하지만 카티전 곱은 두 테이블에서 가능한 모든 조합으로서 데이터가 조회된다고 했습니다. 따라서 country 테이블의 5건과 city 테이블 전체 건수인 4,079건을 조합해 20,395(5 × 4079)건이 나오게 됩니다. 나머지 대륙도 마찬가지입니다.