Как правильно сделать запрос - MySQL
Формулировка задачи:
Привет всем. Помогите с запросом, что-то не пойму как сделать.
Есть таблица mytable с полями:
В поле "payed_status" хранится статус оплаты. Нужно в запросе типа:
получить все данные. Надо так, если "payed_status = 1", то вместо числа, которое в поле "summa_for_payed" всегда получать "0".
Если в запросе добавлю "and payed_status not like '1'", то получится, что вывода этой строки вообще не будет получено, но надо получить всё, только с уже изменённым полем "summa_for_payed" в зависимости от состояния "payed_status"
| driver_id | INT(11) | DATE | DATE | driver_name | VARCHAR(100) | percent | INT(11) | sum_recieved_from_client | DECIMAL(9,2) | sum_tariff_for_driver | DECIMAL(9,2) | summa_for_payed | DECIMAL(9,2) | payed_status | tinyint(1) | percent_company | INT(11)
SELECT * FROM mytable WHERE DATE(`date`) BETWEEN '$start_date' AND '$end_date'";
Добавлю, так же надо, чтобы во время запроса с командой sum(summa_for_payed) за определённую дату, получать сумму, имея ввиду значение поля "payed_status", а точнее чтобы где "payed_status = 1", то и в сумме поля "summa_for_payed" считались как "0" если "payed_status = 1"
Решение задачи: «Как правильно сделать запрос»
textual
Листинг программы
SELECT SUM(IF(`payed_status`=1, 0, `summa_for_payed`)) FROM mytable
Объяснение кода листинга программы
В данном коде происходит следующее:
payed_status
- это название переменной, которая содержит значения, определяющие статус оплаты (например, 1 - оплачено, 0 - не оплачено).summa_for_payed
- это название переменной, которая содержит сумму, которую необходимо оплатить.IF
- это функция, которая возвращает одно значение, если условие верно, и другое значение, если условие ложно.SUM
- это функция, которая суммирует все значения в выбранном столбце.IF(
payed_status=1, 0,
summa_for_payed)) - это выражение, которое возвращает 0, если
payed_statusравно 1 (оплачено), и возвращает
summa_for_payed(сумму к оплате), если
payed_status` не равно 1.FROM mytable
- это указание, из какой таблицы нужно выбрать данные. Таким образом, данный запрос выбирает сумму, которую необходимо оплатить, и возвращает ее. Если все значения в столбцеpayed_status
равны 1, то возвращается 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д