0

だから私は以下を使用しています:

    $r = new Record();
    $r->select('ip, count(*) as ipcount');
    $r->group_by('ip');
    $r->order_by('ipcount', 'desc');
    $r->limit(5);

    $r->get();

    foreach($r->all as $record)
    {
        echo($record->ip." ");
        echo($record->ipcount." <br />");
    }

標準:

SELECT `ip`, count(*) as ipcount FROM (`soapi`) GROUP BY `ip` ORDER BY `ipcount` desc LIMIT 5;

そして、最後の (5 番目の) レコードのみがエコーされ、エコーされません ipcount

これを回避する別の方法はありますか?私は DataMapper (したがって質問) の学習に取り組んでおり、これのいくつかを理解する必要があります。私は、ORM のこと全体に頭を悩ませているわけではありません。

count(*) as ipcount面白いselect()ステートメントなしで設定する方法はありますか? 何らかの理由でそれがトリガーされているとは思わない。これは DataMapper のバグである可能性もありますが、それについては確信が持てません。

また、メソッドを使用しても、ip soapi$r->query()のようなものを使用すると、最後のエントリ以外は何も返されないことがわかりました。ただし、私が. がない場合は、最後の行のみを返します。SELECTFROMWHERE 1;SELECT * FROM soapi WHERE 1;*

新しいクエリで確認したところ、すべての列を選択する以外 ( *) は最後のレコードのみを返します。これに関するどんな助けも素晴らしいでしょう。のようなステートメントを作成できselect *, count(*) as ipcountますが、それでも を介してアクセスすることはできません$record->ipcount

4

1 に答える 1

0

あなたの場合、MySQL で COUNT() 関数を使用すると、1 つの値のみが返されます。したがって、ip結果データは表示されません。

この 2 つのクエリを分割することをお勧めします。1. COUNT(*) の場合 2. の場合ip

この助けを願っています。

于 2011-11-25T07:19:23.000 に答える