2

このSQLクエリがある場合:

select substring(id for 2) as key, 
yw, count(*)
from pref_money group by yw, key

週ごとおよびキーごとのユーザー数を返す:

 key |   yw    | count
-----+---------+-------
 VK  | 2010-45 |   144
 VK  | 2010-44 |    79
 MR  | 2010-46 |    72
 OK  | 2010-48 |   415
 FB  | 2010-45 |    11
 FB  | 2010-44 |     8
 MR  | 2010-47 |    55
 VK  | 2010-47 |   136
 DE  | 2010-48 |    35
 VK  | 2010-46 |   124
 MR  | 2010-44 |    40
 MR  | 2010-45 |    58
 FB  | 2010-47 |    13
 FB  | 2010-46 |    13
 OK  | 2010-47 |  1834
 MR  | 2010-48 |    13
 OK  | 2010-46 |  1787
 DE  | 2010-44 |    83
 DE  | 2010-45 |   128
 FB  | 2010-48 |     4
 OK  | 2010-44 |  1099
 OK  | 2010-45 |  1684
 DE  | 2010-46 |   118
 VK  | 2010-48 |    29
 DE  | 2010-47 |   148

それでは、どうすればそれらのユーザーを数えることができますか? 私はしようとしています:

    $sth = $db->prepare('select substring(id for 2) as key, yw, count(*)
                         from pref_money group by yw, key');
    $sth->execute();
    while ($row = $sth->fetch(PDO::FETCH_ASSOC))
            ++$users[$row['yw']][$row['key']];
    print_r($users);

しかし、多数のエラーが発生します。

積み上げ棒グラフのデータを取得しようとしています。X 軸には週番号が表示され、Y 軸にはキー文字列でグループ化されたユーザー数が表示されます。

ありがとうございました!アレックス

4

2 に答える 2

2

列を合計しようとしていますか、countそれとも単に返される行数を取得しようとしていますか?後者の場合、phpにはそのためのメソッドがあります。前者の場合は、$users[$row['yw']][$row['key'] += $row['count']代わりに作成する必要があります(アレイがすでに作成されていると仮定します)。

于 2010-11-29T14:28:54.770 に答える
-1
$sth = $db->prepare('select substring(id for 2) as key, yw, count(*)
                         from pref_money group by yw, key');
    $sth->execute();
    $users=array();  //  register $users as an array.
    while ($row = $sth->fetch(PDO::FETCH_ASSOC))
            if(!isset($users[$row['yw']])){// see if $users['whatever_key'] has already been set
               $users[$row['yw']]=0;//if not, initialize it as a default starting value of 0
             }
            $users[$row['yw']]+=$row['key'];//now we won't get any nasty notices here about undeclared variables or keys..
    print_r($users);
于 2010-11-29T14:26:57.030 に答える