php - MySQL 查询 w/COUNT() 和 HAVING 基于日期比较

标签 php mysql sql count

我试图将计数结果限制为满足特定条件的结果。我当前正在使用 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/

相关文章:

php - 使用 mysql 查询邮件检索

php - 联系人 API : can't get "updateContact" PHP function to work

php - 更新mysql表编码特殊字符

php - 准备 MySQL INSERT INTO ON DUPLICATE KEY UPDATE 的语法是否正确?

mysql - 在 IN 查询中使用文本 CSV 字段

mysql - JOIN 或 LEFT JOIN 是否持续检查 SELECT 查询?

php - 从不使用存储过程的数据库中编辑和删除特定行

php - 使用 PHP 在大型数据库上进行 Cron 作业,需要建议

php - 设计具有多个变量的工作调度数据库?

php - 在mysql中通过lat lng获取10km以内的记录