我有Payment Table
.此付款表有paymentCusId(It is Customer Id)
、paymentCredit
和paymentDebit
行等...我怎么能显示,如果客户的余额低于50欧元,我想显示有多少客户的余额低于50欧元。
例如,5 个客户的余额少于 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;
有关代码点火器查询生成器的更多信息,请查看其文档
在尝试获取结果或num_rows等之前确定查询是否正确的一个好方法是验证它是否有错误:
$error = $this->db->error();
if($error) {
echo $error['message'];
echo $error['code'];
}