【问题标题】:Codeigniter ActiveRecord, count records by categoryCodeigniter ActiveRecord,按类别统计记录
【发布时间】:2013-07-16 06:56:38
【问题描述】:

也许我现在无法正确思考。但我想尝试弄清楚的是如何在数据库中返回一组结果,即每个类别的行数。无需根据每个类别进行查询。

本例中的类别是状态。我有 90,000 行数据,有 50 个不同的状态来划分数据。有没有办法创建与每个州相关的计数?

我想说group_by 什么的,但老实说我现在想不出来。想法?

member | comment | state | dataset
----------------------------------
000    |something| CA    | an_object_of_data
000    |something| CA    | an_object_of_data
000    |something| CA    | an_object_of_data
000    |something| NY    | an_object_of_data
000    |something| NY    | an_object_of_data
000    |something| CA    | an_object_of_data
000    |something| CT    | an_object_of_data
000    |something| CA    | an_object_of_data

以上是排序中的 db 表的示例。想象一下这样的事情,有 90k 行和更多 state

如果我可以通过对结果或其他内容进行分组来获得返回的计数,即:“CA=4”、“CT=1”、“NY=2”

【问题讨论】:

  • 是的,你可以。但是很高兴了解更多关于您的数据库的信息。向我们展示一个创建表。

标签: php mysql codeigniter activerecord


【解决方案1】:
select state,  count(state) from states group by state order by state ASC;

我想这可能以最简单的方式起作用!

CI 风格:

$this->db->select("state, count(state)");
$this->db->from("states");
$this->db->group_by("state");
$this->db->order_by("state", "ASC");
$this->db->get();

【讨论】:

  • group_by?你舒尔吗?
  • 确实有效,正如我所希望的那样!你不知道这有多大帮助,太累了,为项目做最后的事情。只需将其转换为该查询的 CI 活动记录变体就可以了,我想我应该能够做到这一点,尽管使用类似 $this->db->query("select count(state),state from states group by state order by state ASC");
  • +1 很高兴看到阿富汗也有开发人员 :)
【解决方案2】:

代码是

$this->db->select('count(states.state) as count,state',false)
         ->from(states)
         ->group_by('states.state')
         ->get()
         ->result();

【讨论】:

  • @BobbyDigital 我是堆栈溢出的新手,一定会遵守规则。
猜你喜欢
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 2013-10-03
相关资源
最近更新 更多