[英]MySQL: WHERE-clause in query with COUNT and GROUP BY?
對於我的廣告使用的每個類別,我想顯示廣告的總數。
我當前的查詢如下所示:
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
我在努力包含一個WHERE子句,該子句專門規定僅顯示那些持續時間仍然有效的廣告。 我試圖在“ FROM廣告”和“ LEFT JOIN ...”之間加入以下子句:
WHERE TIME_TO_SEC(timediff(now(),adverts.stamp_created))<=adverts.duration
因此整個查詢都希望這樣,但這不起作用:
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
查詢有什么問題?
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
您的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.