我有付款表
。此付款表有 paymentCusId(这是客户 ID)
, paymentCredit
和 paymentDebit
行等...我如何显示,如果客户的余额是少于 50 欧元,我想显示有多少客户的余额少于 50 欧元。
For example, 5 customers balance less than 50.
我可以使用sql查询或php条件解决这个问题吗?
代码如下:
$this->db->select('payment.paymentCusId, sum(paymentCredit) - sum(paymentDebit)');
$this->db->from('payment');
$this->db->where('sum(paymentCredit) - sum(paymentDebit) <', 50);
$query_debit = $this->db->get();
$number = $query_debit->num_rows();
echo $number;
这段代码不能很好地工作。我该如何显示少于 50 欧元的客户数量?
最佳答案
您尝试执行的查询有两个错误。
1 - 为了使用聚合函数,您需要使用 GROUP BY 对结果进行分组
2 - WHERE 子句上的聚合函数不起作用,您需要将其放在having 子句中。
对于您的情况,正确的查询是:
$this->db->select('payment.paymentCusId, sum(paymentCredit) - sum(paymentDebit)');
$this->db->from('payment');
$this->db->group_by('payment.paymentCusId');
$this->db->having('sum(paymentCredit) - sum(paymentDebit) <', 50);
$query_debit = $this->db->get();
$number = $query_debit->num_rows();
echo $number;
有关 codeigniter 查询构建器的更多信息,请查看他们的 documentation
在尝试获取结果或 num_rows 等之前确定查询是否正确的一个好方法是验证它是否有错误:
$error = $this->db->error();
if($error) {
echo $error['message'];
echo $error['code'];
}
关于php - Codeigniter - 显示有条件的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52526145/