0

私はこれを持っています

$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`)
) ;
4

2 に答える 2

0
  1. クエリを変数に入れて、echo正確に何が MySQL に送信されているかを確認します。

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

  2. 集計にエイリアスを使用する:

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

  3. mysql_関数は非推奨です。新しいコードでは使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。

  4. MySQL はGROUP BY、望ましくない結果をもたらす可能性のある機能を拡張します。ない列を選択しないことをお勧めします。GROUP BY

于 2013-01-27T17:53:02.217 に答える
0

「国」をグループ化して結果を取得したい場合は、クエリで「*」を指定する代わりに、国を選択してグループ化します。

于 2013-01-27T18:01:57.440 に答える