我试图将计数结果限制为满足特定条件的结果。我当前正在使用 WHERE 子句,并且我的输出符合预期。
这是我当前的查询,如您所见,只有当我的 WHERE recdate 满足 14 天标记时,才会提取 *ads_list* 和 *ads_cate* 记录:
$queryCats = "
SELECT ads_cate.cateName, COUNT(ads_list.Title)
FROM
ads_cate
JOIN ads_list ON ads_cate.id = ads_list.category
WHERE to_days(now())<=(to_days(recdate)+14)
GROUP BY ads_cate.cateName";
我希望检索所有类别和广告,但仅当它们满足我的 WHERE 子句条件时才计数。我一直在使用 HAVING,运气为 0,如下所示。也许有更好的方法?
$queryCats = "
SELECT ads_cate.cateName, ads_list.recdate, COUNT(ads_list.Title)
FROM
ads_cate
JOIN ads_list ON ads_cate.id = ads_list.category
GROUP BY ads_cate.cateName
HAVING to_days(now())<=(to_days(recdate)+14)";
最佳答案
尝试使用LEFT JOIN
并将日期测试作为连接条件的一部分:
SELECT ac.cateName, COUNT(al.Title)
FROM ads_cate ac
LEFT JOIN ads_list al
ON ac.id = al.category
AND to_days(now())<=(to_days(al.recdate)+14)
GROUP BY ac.cateName
关于php - MySQL 查询 w/COUNT() 和 HAVING 基于日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459916/