2012-11-22 4 views
0

에 COUNT :MySQL의 : SELECT 나는이 두 테이블이 같은 쿼리

CITY 표

enter image description here

클럽 TABLE 내가 '무엇

enter image description here

내가하려고하는 것은 동일한 큐로 선택하는 것이다. 출판 된 클럽을 포함하는 모든 도시 (published 필드는 1로 설정 됨)와 해당 도시에 출판 된 클럽의 총수.

현재 두 단계로 작업하고 있지만 한 가지 쿼리로 병합하여 성능을 향상시키고 싶습니다.

SELECT c.id, c.name, c.slug 
FROM city c, club cl 
WHERE c.id = cl.city_id 
AND (SELECT COUNT(*) 
     FROM club cl, city c 
     WHERE cl.city_id = c.id AND cl.published = 1) > 0 
GROUP BY c.id 

이 후에는 COUNT 개를 받기 위해 각 도시에 대한 쿼리를 수행하고 있습니다. 이 같은

답변

1

뭔가 : -

SELECT city.id, city.name, city.slug, COUNT(club.id) AS club_count 
FROM city 
INNER JOIN club 
ON city.id = club.city_id 
WHERE club.published = 1 
GROUP BY city.id, city.name, city.slug 
HAVING club_count > 0 
+0

이 마법처럼 일했다. HAVING 절의 오타가 'club_count'여야합니다. –

+0

Ooops, 오타가 수정되었습니다. – Kickstart