带有WHERE的GROUP BY没有显示任何内容

时间:2013-01-27 17:51:17

标签: php mysql group-by where

我有这个

$query = mysql_query("SELECT *, COUNT(*) FROM impressions WHERE pub_tag = '$pub_tag' AND pub_id = '$pub_id' AND month = '$date' GROUP BY country");
while($stat_cont = mysql_fetch_array($query)) {
echo '[\''.$stat_cont['country'].'\', '.$stat_cont['COUNT(*)'].'],';
}

它显示没有任何也没有错误。删除WHERE后,它就可以了。

CREATE TABLE IF NOT EXISTS `impressions` (
  `id` int(15) unsigned NOT NULL AUTO_INCREMENT,
  `pub_id` int(10) unsigned NOT NULL,
  `pub_tag` varchar(10) NOT NULL,
  `time` int(10) unsigned NOT NULL,
  `month` int(6) unsigned NOT NULL,
  `ip` int(15) unsigned NOT NULL,
  `country` varchar(100) NOT NULL,
  `country_city` varchar(150) NOT NULL,
  `country_region` varchar(100) NOT NULL,
  `country_code` varchar(2) NOT NULL,
  `revenue` float unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ;

2 个答案:

答案 0 :(得分:0)

  1. 将您的查询放入变量echo,以查看究竟发送给MySQL的内容。

    $stmt = "SELECT ... ";
    echo $stmt;

  2. 为聚合使用别名:

    SELECT Country, COUNT(*) AS count ...

  3. mysql_函数已弃用。请不要在新代码中使用它们。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。

  4. MySQL扩展了可能产生不良结果的GROUP BY功能。最佳做法是不选择不在GROUP BY

  5. 中的列

答案 1 :(得分:0)

如果您想通过对“国家/地区”进行分组来获得结果,而不是在查询中提供“*”,请在select和group by中提供国家/地区。