codeigniter-带条件显示数字

hkmswyz6  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(377)

我有 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欧元的客户数量?

uyhoqukh

uyhoqukh1#

您尝试执行的查询有两个错误。
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查询生成器的更多信息,请查看他们的文档
在尝试获取结果或num\u行等之前,判断查询是否正确的一个好方法是验证它是否有错误:

$error = $this->db->error();
    if($error) {
       echo $error['message'];
       echo $error['code'];
    }

相关问题