php - Codeigniter - 显示有条件的数字

标签 php mysql sql codeigniter sum

我有付款表。此付款表有 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/

相关文章:

php - 如何使用 mongodb 和 php 正确处理分页查询?

php - Doctrine 结果缓存不缓存带有连接的查询

php - 进行 URL 重写

Mysql 更新多表查询

sql - 如何在PostgreSQL中使用date_trunc截断到100毫秒?

mysql - 计算接收802.11数据包的时间

java - SQL语法错误异常 : The '+' operator with a left operand type of 'VARCHAR' and a right operand type of 'VARCHAR' is not supported

php - Symfony2 从 Twig 扩展服务访问用户

php - 用 php 5 解析 json 不工作

php - 使用 PHP 和 MYSQL 进行错误处理的推荐方法