我有下表,我试图显示p_total
的总和以及表中的所有其他记录。我已设法显示总金额,但如果我显示它,则只显示表格第一行的值。虽然p_total的总和正确显示为600。
你能否告诉我下面代码中的问题:
提前致谢 :)
我的数据库表:
p_id p_name p_quantity p_rate p_total user_id
1 Pepsi 12 30 360 1
2 Hot Breads 12 20 240 1
我的模型中有以下代码
$this->db->select('*,SUM(temporary_table.p_total AS Total');
$this->db->from('temporary_table');
$this->db->where('user_id',$user_id);
$getData = $this->db->get('');
if($getData->num_rows() > 0) {
return $getData->result_array();
}
else {
return null;
}
这是我的控制器:
$this->load->model('mod_sales');
$data['records']= $this->mod_sales->add_to_temporary_table($user_id);
我的看法:
foreach ($records as $row)
{
<td><?php echo $row['p_name'];?></td>
<td><?php echo $row['p_quantity'];?></td>
<td><?php echo $row['p_rate'];?></td>
<td><?php echo $row['p_total'];?></td>
}
<?php echo $row['Total'];?>
在您的视图中:
$total_sum=0;
foreach ($records as $row){
<td><?php echo $row['p_name'];?></td>
<td><?php echo $row['p_quantity'];?></td>
<td><?php echo $row['p_rate'];?></td>
<td><?php echo $row['p_total'];?></td>
$total_sum+=$row['p_total'];
}
<?php echo $total_sum;?>
您有一个完整且单独的列表。
$this->db->select_sum('total_price');
$this->db->from('order');
$this->db->where('dates BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW() ');
$query=$this->db->get();
$data['total']=$query->row()->total_price;
$this->db->select('*');
$this->db->from('order');
$this->db->where('dates BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW()');
$query=$this->db->get();
$data['count']=$query->num_rows();
输出:
Array (
[total] => 2759
[count] => 5
)
你错过了GROUP BY
条款。
据我了解,你想要这个:
SELECT *, SUM(p_total) FROM temporary_table WHERE user_id = ... GROUP BY p_id
不熟悉CodeIgniter,但在“where”之后猜测你需要这一行:
$this->db->group_by('p_id');