MySQL服务器版本:服务器版本:4.1.14
MySQL客户端版本: 3.23.49
正在讨论的表: ads_list和ads_cate。
表关系:ads_cate包含许多ads_list。
键入: ads_cate.id = ads_list.Category。
我不确定这里发生了什么,但我想在一个简单的agreggate查询中使用COUNT(),我得到空白输出。
这是一个简单的例子,它会返回预期的结果:
$queryCats = "SELECT id, cateName FROM ads_cate ORDER BY cateName";
但是如果我修改它来添加COUNT()和其他查询数据我得不到数组返回w / print_r()(没有结果)?
$queryCats = "SELECT ads_cate.cateName, ads_list.COUNT(ads_cate.id),
FROM ads_cate INNER JOIN ads_list
ON ads_cate.id = ads_list.category
GROUP BY cateName ORDER BY cateName";
最终,我正在尝试计算每个类别中的ad_list项目数。
我在这里尝试做的是否存在MySQL版本冲突?
注意:我花了一些时间逐项分解,COUNT()似乎导致array()消失。并且JOIN似乎做了同样的事情......我无法帮助我在没有访问php或mysql错误设置的Yahoo服务器上开发它。
答案 0 :(得分:2)
我认为您的COUNT语法错误。它应该是:
COUNT(ads_cate.id)
或
COUNT(ads_list.id)
取决于你在计算什么。
答案 1 :(得分:2)
Count是一个聚合。意味着永远返回结果集至少一个
这里你试试count ads_list.id不是null但是那个错了。怎么说Myke Count(ads_cate.id)或Count(ads_list.id)是更好的方法
你有内部加入ads_cate.id = ads_list.category所以不需要Count(ads_cate.id)或COUNT(ads_list.id)只计算(*)
现在如果你不想要null添加
仅匹配
SELECT ads_cate.cateName, COUNT(*),
FROM ads_cate INNER JOIN ads_list
ON ads_cate.id = ads_list.category
GROUP BY cateName
having not count(*) is null
ORDER BY cateName
所有
SELECT ads_cate.cateName, IFNULL(COUNT(*),0),
FROM ads_cate LEFT JOIN ads_list
ON ads_cate.id = ads_list.category
GROUP BY cateName
ORDER BY cateName
答案 2 :(得分:1)
你可能会遇到错误。检查服务器日志。
另外,看看尝试这个时会发生什么:
SELECT COUNT(*), category
FROM ads_list
GROUP BY category
答案 3 :(得分:1)
你有没有尝试过:
$queryCats = "SELECT ads_cate.cateName, COUNT(ads_cate.id)
FROM ads_cate
JOIN ads_list ON ads_cate.id = ads_list.category
GROUP BY ads_cate.cateName";
我猜你需要列表中的类别,在这种情况下,这里的查询应该有效。首先尝试不使用ORDER BY。
答案 4 :(得分:1)
您的数组为空或消失,因为您的查询有错误:
请尝试直接在MySQL中运行该查询,您将看到错误。或者尝试使用mysql_error()回显输出。
现在,与您的查询相关的其他一些要点:
也许您正在尝试检索ads_cate的ads_list数量?这可能是您的查询:
SELECT `ads_cate`.`cateName`, COUNT(`ads_list`.`category`) `cnt_ads_list`
FROM `ads_cate`
INNER JOIN `ads_list` ON `ads_cate`.`id` = `ads_list`.`category`
GROUP BY `cateName`;
希望有帮助吗?