Codeigniter - Показать номер с условиями - PullRequest
0 голосов
/ 27 сентября 2018

у меня Payment Table.В этой таблице платежей есть строки paymentCusId(It is Customer Id), paymentCredit и paymentDebit и т. Д. Как я могу показать, если баланс клиента меньше 50 евро , я хочу показать, сколько клиентов баланс менее 50 евро .

Например, баланс 5 клиентов составляет менее 50.

Можно ли решить эту проблему с помощью sql query или 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 Ответ

0 голосов
/ 27 сентября 2018

Запрос, который вы пытаетесь выполнить, имеет две ошибки.

1 - Для того чтобы функции, которые агрегируют функцию, вам нужно сгруппировать результат с помощью GROUP BY

2 - Функции агрегирования включеныпредложение WHERE не работает, вам нужно поместить его в предложение Имеет.

Для вашего случая правильный запрос будет:

$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_rows и т. Д., - убедиться, что в нем есть ошибка:

    $error = $this->db->error();
    if($error) {
       echo $error['message'];
       echo $error['code'];
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...