2014-09-29 99 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(); 

希望它能幫助