2014-09-29 79 views
0

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

我的代码是:

$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(值)为总,datemember_id FROM(steps)WHERE member_id = '1' AND costvalue>'9999'和costdate = DATE_SUB(NOW(),间隔5天)

+0

你需要按日期添加组,member_id – radar 2014-09-29 15:15:25

+0

组按日期,member_id? – jamper 2014-09-29 15:26:11

+0

是的,正确@jamper – radar 2014-09-29 15:27:49

回答

0

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

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

  1. 这可能是一个错字,但是您的代码是从“orders”和原始查询中获取数据,数据是从“steps”中获取的。如果不是拼写错误,那么你看错了地方。
  2. 在你的“哪里”,你要求的行日期等于(=)到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(); 

希望它能帮助