2015-04-02 60 views
3

我是codeigniter的初學者。
我有這樣的查詢,我想在笨從Codeigniter中的Limit Limit中選擇SUM

SELECT sum(price) 
FROM (SELECT price 
     FROM items 
     ORDER BY price DESC 
     LIMIT 3 
) AS subquery; 

我已經做了

$this->db->select('SUM(price)'); 
$this->db->select('price'); 
$this->db->from('items'); 
$this->db->order_by('price desc'); 
$this->db->limit(3); 
$this->db->get(); 

這給了這樣

SELECT sum(price), price 
     FROM items 
     ORDER BY price DESC 
     LIMIT 3; 

我能做些什麼輸出到使用此查詢?

+0

什麼錯誤? – 2015-04-02 09:46:19

+0

是你的原始查詢工作正常嗎? – Raja 2015-04-02 09:47:05

+0

我的原始查詢效果很好 – 2015-04-02 10:26:10

回答

3

使用這樣

$this->db->select_sum('price'); 
$this->db->select('price'); 
$this->db->from('items'); 
$this->db->order_by('price desc'); 
$this->db->limit(3); 
$this->db->get(); 
+0

我沒有得到預期的輸出 – 2015-04-02 10:31:26

+0

什麼你想要的結果? – Saty 2015-04-02 10:32:26

+0

當我嘗試你的查詢它會給出這樣的輸出'SELECT sum(price),price FROM items ORDER BY price DESC LIMIT 3;' – 2015-04-02 10:44:16

1

使它簡單,如果您的查詢工作正常。

$query = $this->db->query('SELECT sum(price) FROM (SELECT price FROM items ORDER BY price DESC LIMIT 3) AS subquery'); 
print_r($query->result_array()); 
+1

其實這不是我的查詢,我有一個大表加入我的模塊。我剛剛問過一個簡單的項目。如果我嘗試你的查詢它將需要50行。 – 2015-04-02 10:46:13

0
public function advanceSalary($id) { 
     if ($id) { 
      $this->db->select('salaryLaser.*'); 
      //$this->db->select_sum('salaryLaser.credit'); 
      $this->db->select('SUM(salaryLaser.credit) as creditTotal'); 
      $this->db->select('SUM(salaryLaser.debit) as debitTotal'); 
      $this->db->from($this->salaryLaser); 
      $this->db->where('salaryLaser.employeeId', $id); 
      $this->db->where('salaryLaser.employeeRole', '1'); 
      $advance = $this->db->get(); 
      if ($advance->num_rows() > 0) { 
       return $advance->row(); 
      } else { 
       return FALSE; 
      } 
     } else { 
      return FALSE; 
     } 
    }