所以我使用以下内容:
$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;
我只得到最后一个(第五个)记录回显而没有 ipcount
回显。
有不同的解决方法吗?我正在研究DataMapper(因此问题),需要解决一些问题。我还没有完全围绕整个ORM的事情。
有没有办法设置count(*) as ipcount
没有有趣的select()
声明?我认为它不会因某种原因而触发。这也可能是DataMapper中的一个错误,但我不太确定。
此外,我发现即使我使用$r->query()
方法,如果我使用SELECT
ip FROM
soapi WHERE 1;
之类的内容,它也不会返回除最后一个条目之外的任何内容。然而,如果我说SELECT * FROM soapi WHERE 1;
,它将返回所有内容(就像它应该的那样)。如果它没有*
,则只返回最后一行。
刚刚使用新查询进行验证,除了选择所有列(*
)之外的任何内容都只返回最后一条记录。对此的任何帮助都会很棒。您可以制作select *, count(*) as ipcount
之类的声明,但之后您仍然无法通过$record->ipcount
访问它。
答案 0 :(得分:0)
对于您的情况,一旦在MySQL中使用COUNT()函数,它将只返回1个值。因此,ip
结果数据不会显示出来。
我建议您只拆分这两个查询。
1.对于COUNT(*)
2.对于ip
希望得到这个帮助。