powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает IF
14 сообщений из 14, страница 1 из 1
Не работает IF
    #39452400
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Имею данные [img=]
Необходимо заполнить колонку delay
calculate delay as:
a.1) for existing finished_date
if finished_date-due_date<=0 than 0
if finished_date-due_-duedate>0 than finished_date-due_date
a.2) for blanks finished_date
cur_date-due_date

но IF выдает ошибку
мой код

IF finished_date is null THEN delay=cur_date-due_date
ELSE IF finished_date-due_date<=0 THEN delay is null
ELSE delay=finished_date-due_date
END IF;

Подскажите пожалуйста как исправить
...
Рейтинг: 0 / 0
Не работает IF
    #39452403
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не работает IF
    #39452419
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
ума не приложу как это можно решить через select case
...
Рейтинг: 0 / 0
Не работает IF
    #39452551
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
theanton3399,
в п. 2) delay может быть отрицательным. Это правильно?
...
Рейтинг: 0 / 0
Не работает IF
    #39452580
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,

Да, в некоторых случаях получается отрицательное число
...
Рейтинг: 0 / 0
Не работает IF
    #39452600
скукртища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
theanton3399,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SET delay = 0;

IF finished_date IS NULL THEN 
    SET delay = cur_date - due_date;
ELSEIF finished_date > due_date THEN 
    SET delay = finished_date - due_date;
END IF;
...
Рейтинг: 0 / 0
Не работает IF
    #39452602
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукртища,

alter table loan add delay integer after cur_date
SET delay = 0;
18:22:07 SET delay = 0 Error Code: 1193. Unknown system variable 'delay' 0.000 sec

Как быть с этим? mysql не видит новую переменную
...
Рейтинг: 0 / 0
Не работает IF
    #39452617
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
theanton3399,
может тебе просто запрос подойдёт
Код: sql
1.
2.
3.
4.
5.
UPDATE {put_your_table_name_here}
SET delay = IF(finished_date IS NULL, 
    DATEDIFF(cur_date, due_date), 
    IF(finished_date > due_date, DATEDIFF(finished_date, due_date), 0))
;
...
Рейтинг: 0 / 0
Не работает IF
    #39453487
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,

UPDATE loan SET delay = IF(finished_date IS NULL, DATEDIFF(cur_date, due_date), IF(finished_date > due_date, DATEDIFF(finished_date, due_date), 0)) Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0,016 sec
:D
...
Рейтинг: 0 / 0
Не работает IF
    #39453492
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
theanton3399,

в такой форме работает, но тогда данные не заносятся в таблицу
select r_loan_id, IF(finished_date IS NULL, DATEDIFF(cur_date, due_date), IF(finished_date > due_date, DATEDIFF(finished_date, due_date), 0)) as delay from loan
...
Рейтинг: 0 / 0
Не работает IF
    #39453502
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
theanton3399,

в воркбенче твой код не работал, а в командной строке пошел
Как его написать что бы он работал в воркбенче тоже?
Спасибо за помощь))
...
Рейтинг: 0 / 0
Не работает IF
    #39453518
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
theanton3399,
авторв воркбенче твой код не работал, а в командной строке пошел
Как его написать что бы он работал в воркбенче тоже?
Прочитать внимательно/перевести сообщение об ошибке.
авторUPDATE loan SET delay = IF(finished_date IS NULL, DATEDIFF(cur_date, due_date), IF(finished_date > due_date, DATEDIFF(finished_date, due_date), 0))
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
0,016 sec

Прочитать, что такое safe update mode
...
Рейтинг: 0 / 0
Не работает IF
    #39460828
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, как можно приспособить функцию count чтобы она считала вот так

Не могу никак придумать алгоритм
...
Рейтинг: 0 / 0
Не работает IF
    #39460938
theanton3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А сосчитать надо r_client_id в новом столбце number_of_loan
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает IF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]