2015-01-17 2 views
0

내 광고에 사용 된 각 카테고리에 대해 전체 광고 수를 표시하고자합니다.MySQL : COUNT 및 GROUP BY를 사용하는 쿼리의 WHERE 절?

나의 현재 쿼리는 다음과 같습니다

SELECT 
    categories_adverts.category, 
    COUNT(adverts.id) AS numberOfAdverts 
FROM adverts 
LEFT JOIN categories_adverts 
ON adverts.id_categories_adverts=categories_adverts.id 
GROUP BY category ASC 

내가 만 광고는 그 기간이 여전히 유효 표시되는 specificies WHERE 절을 포함하여 고민하고있다.

WHERE TIME_TO_SEC(timediff(now(),adverts.stamp_created))<=adverts.duration 

그래서 전체 쿼리는 다음과 같이 싶지만,이 작동하지 않습니다 : 나는 "광고 FROM"과 사이에 다음 조항을 포함하려고 "LEFT ... 가입"

SELECT 
    categories_adverts.category, 
    COUNT(adverts.id) AS numberOfAdverts 
FROM adverts 
WHERE TIME_TO_SEC(timediff(now(),adverts.stamp_created))<=adverts.duration 
LEFT JOIN categories_adverts 
ON adverts.id_categories_adverts=categories_adverts.id 
GROUP BY category ASC 

쿼리에 대한 잘못된 점은 무엇입니까?

답변

0

당신의 당신의이 같은 , 그룹화 및 주문 조인과 이전 후 절은해야 WHERE :

SELECT 
    categories_adverts.category, 
    COUNT(adverts.id) AS numberOfAdverts 
FROM adverts 
LEFT JOIN categories_adverts 
ON adverts.id_categories_adverts=categories_adverts.id 
WHERE TIME_TO_SEC(timediff(now(),adverts.stamp_created))<=adverts.duration 
GROUP BY category ASC 
0

where 절은 오는 후 join

SELECT c.category, 
     COUNT(a.id) AS numberOfAdverts 
FROM adverts a 
LEFT JOIN categories_adverts c ON a.id_categories_adverts = c.id 
WHERE TIME_TO_SEC(timediff(now(),a.stamp_created)) <= a.duration 
GROUP BY c.category ASC 
관련 문제