【问题标题】:Get the result of SUM and group field from Active record in Codeigniter从 Codeigniter 中的活动记录中获取 SUM 和组字段的结果
【发布时间】:2014-03-06 09:08:36
【问题描述】:

我需要在 Codeigniter 中构建此查询,但我不知道如何获得 SUM 的结果:

SELECT 
    description, SUM(amount)
FROM
    PAYMENT
WHERE
    (date_payment between '2014-02-01 00:00:00' AND '2014-02-28 23:59:59')
GROUP BY description;

我正在尝试通过以下方式获得结果:

$qwer = $this->db->query("
    SELECT description, SUM(amount)
    FROM PAYMENT
    WHERE (date_payment between '$min_date' AND '$max_date')
    GROUP BY description;");

$i = 0;
foreach ($qwer->result() as $payment) {
    $det_payment[$i] = array(
        'description'=>$payment->description,
        'amount'=>$payment->amount
    );
    $i++;
}

当然 "$payment->amount" 是错误的,但如果我为 SUM 使用别名,则模型不起作用。

编辑:现在我可以在描述或总和之间进行选择,但我不能同时使用 select 和 select_sum

$this->db->select('description');
//$this->db->select_sum('amount', 'amount');
$this->db->where('date_payment >=', $min_fecha);
$this->db->where('date_payment <=', $max_fecha);
$this->db->group_by("description");
$qwer = $this->db->get('PAYMENT');

【问题讨论】:

    标签: codeigniter activerecord


    【解决方案1】:

    设置 FALSE 作为第二个参数,'select' 允许编写自定义句子。

    $this->db->select('description, SUM(amount) AS amount', FALSE);
    $this->db->where('date_payment >=', $min_date);
    $this->db->where('date_payment <=', $max_date);
    $this->db->group_by("description");
    $qwer = $this->db->get('PAYMENT');
    

    Documentation for CI2
    Documentation for CI3

    【讨论】:

      【解决方案2】:

      试试这样的:

      $query = $this->db->select_sum('amount', 'Amount');
      $query = $this->db->where(...)
      $query = $this->db->get('payment');
      $result = $query->result();
      
      return $result[0]->Amount;
      

      【讨论】:

      • 我还需要按描述分组并获取该行。重点是获取这两个字段。
      猜你喜欢
      • 1970-01-01
      • 2012-06-21
      • 2012-12-11
      • 2012-07-05
      • 2010-12-27
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多