【问题标题】:codeigniter sum query for single column单列的codeigniter求和查询
【发布时间】:2014-11-24 00:55:19
【问题描述】:

有一个查询,我试图返回值超过 10,000 的列的总和结果。我尝试将 sum(value) 作为总和添加到查询中,但它不起作用。

我的代码是:

    $this->db->select('sum(value) as total, date, member_id');
    $this->db->where('member_id', $_SESSION['sess_user_id']);
    $this->db->where('cost.value >', '9999');
    $this->db->where('cost.date = DATE_SUB(NOW(), INTERVAL 5 DAY)');

    $query = $this->db->get('orders');

    return $query->num_rows();

这是原始 SQL 输出:

SELECT sum(value) as total, date, member_id FROM (steps) WHERE member_id = '1' AND cost.value > '9999' AND cost.@ 987654329@ = DATE_SUB(现在(),间隔 5 天)

【问题讨论】:

  • 您需要按日期添加分组,member_id
  • 按日期分组,member_id?
  • 试过了,还是不行。
  • 我对coedigniter不熟悉,能不能发一下正规的SQL
  • 不工作是模糊的,你期望什么,你得到什么?你也在谈论总和,但你返回行数

标签: mysql sql codeigniter-2


【解决方案1】:
function cart_product_join()
    {
        $this->db->select('products.product_id,cart.product_id,SUM(products.special_price*cart.product_qty)');
        $this->db->from('products');
        $this->db->join('cart', 'cart.product_id = products.product_id', 'right');
        $result = $this->db->get()->result();
        return $result;
        //$result=$this->db->last_query();
        //echo $result;
    }

【讨论】:

    【解决方案2】:

    不清楚你想要什么,但是:

    如果您需要日期为 5 天前的特定用户的值的总和,您的查询应该可以工作,但有 2 个问题:

    1. 这可能是一个错字,但在您的代码中,您从“订​​单”中获取数据,而在您的原始查询中,数据是从“步骤”中获取的。如果不是拼写错误,则说明您找错地方了。
    2. 在您的“where”中,您要求的是“date”等于 (=) 到 5 天前的行,但使用“now()”您要求的是日期为 确切的行5 天前,包括小时、分钟和秒。

    如果您需要特定用户的值为 10000 或更多的行数,则不得使用“SUM”,否则您将始终得到 1 作为结果(或 null)。除此之外,日期正好是 5 天前,包括小时、分钟和秒。

    另一方面,你说你想要列数,我认为你需要行数,但如果你真的需要列数,你需要改变

    SELECT sum(value) as total, date, member_id 
    

    SELECT *
    

    return $query->num_rows();
    

    return $query->num_fields();
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多