나는 2 개 테이블이MySQL의 COUNT 제로 항목
inquiry_id ethnicity_id
1 1
2 1
3 1
4 2
5 2
나는 inqu의 수를 보여주는 테이블을 생성하고 싶다. 민족에 의한 ires. 지금까지 내 쿼리는 다음과 같습니다.
SELECT options_ethnicity.ethnicity_name, COUNT('inquiries.ethnicity_id') AS count
FROM (inquiries
LEFT JOIN options_ethnicity ON
options_ethnicity.ethnicity_id = inquiries.ethnicity_id)
GROUP BY options_ethnicity.ethnicity_id
쿼리는 정확한 대답을 제공하지만 결과가 0 인 African/American에 대한 열은 없습니다. 내가 가입 왼쪽이 오른쪽으로 가입 교체 할 경우
White 3
Hispanic 2
, 나는 3 민족의 이름을 얻을 수 있지만, 아프리카/미국의 개수가 잘못되었습니다.
White 3
Hispanic 2
African/American 1
어떤 도움을 주시면 감사하겠습니다. 가입 당신이 LEFT를 사용하기 때문에
SELECT
options_ethnicity.ethnicity_name,
COALESCE(COUNT(inquiries.ethnicity_id), 0) AS count
FROM options_ethnicity LEFT JOIN inquiries ON inquiries.ethnicity_id = options_ethnicity.ethnicity_id
GROUP BY options_ethnicity.ethnicity_id
UNION ALL
SELECT
'NULL Placeholder' AS ethnicity_name,
COUNT(inquiries.inquiry_id) AS count
FROM inquiries
WHERE inquiries.ethnicity_id IS NULL
작업 쿼리 - UNION을 UNION ALL으로 변경합니다. 제거 할 중복 항목이 없습니다. –
네, 맞습니다. UNION을 UNION ALL으로 변경했습니다. 어느 것이 더 빠를 것입니다. – Mitchell