2015-04-02 123 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; 
     } 
    }