我试图将我的计数结果限制在符合特定标准的范围内。我目前正在使用WHERE子句,我的输出与预期一致。
这是我当前的查询,如您所见,*ads_list*和*ads_cate*记录只有在我的WHERE recdate满足14天标记时才会被获取:
$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子句条件时才计算。我一直在用下面的0运气的HAVING。也许有更好的办法?
$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