Страница 1 из 2
Сравнение дат SQL запрос
Добавлено: 15 дек 2020, 08:55
vniig_admin
Подскажите пожалуйста голову уже сломал.
Пытаюсь сделать SQL запрос.
Есть дата окончания работ субподряда [513] дата с кал
Есть срок окончания [547] но
Значение из родительской сущности в Род.сущ. там поле дата с кал. [322]
ID страницы родительской сущности 21
В выбрать поле Я написал:
Код: Выделить всё
if([513]>=[547], '<span color="red">Сроки нарушены!!!</span>')
В поле условие:
ну и окрасить в красный цвет, читал еще можно сделать с помощью CONCAT(). Помогите пожалуйста. Спасибо!
Re: Сравнение дат SQL запрос
Добавлено: 15 дек 2020, 09:01
nruslan2
В описании к полю "Значение из родительской сущности" сказано "Данный тип поля предназначен для отображения значения из родительской сущности. Обратите внимание, что данный тип поля нельзя применить в формулах. Чтобы использовать в формуле значение из родительской сущности, используйте функцию SELECT."
Так что тут немного надо 2а SQL запросами:
Один который забирает данные (он же будет вложенным)
Второй Ваш сравнение (в него как раз и вложить первый).
Re: Сравнение дат SQL запрос
Добавлено: 15 дек 2020, 09:08
vniig_admin
Большое спасибо за быстрый ответ, буду пробовать!)))
Re: Сравнение дат SQL запрос
Добавлено: 15 дек 2020, 09:30
vniig_admin
Я вообще в правильном направлении копаю?
Звучит то просто сравнить 2 даты и вывести если превышено о том, что сроки нарушены.

Re: Сравнение дат SQL запрос
Добавлено: 15 дек 2020, 11:25
imamverdiyeveldar
Делал похожий запрос недавно. поля 250 и 300 поля с датой. поле с датой 300 находится в дочерней сущности, пришлось сделать запрос внутри запроса. и заработало!
SUM([279])
[254]=e.id AND [250]>(SELECT MAX(app_entity_32.field_300) FROM app_entity_32 WHERE app_entity_32.parent_item_id=e.id)
Re: Сравнение дат SQL запрос
Добавлено: 16 дек 2020, 09:48
vniig_admin
Спасибо большое ВСЕМ кто помогает, вот в итоге подпиленный код, что получилось. Но почему то возвращается ноль и никакого сравнения не происходит(
Выбрать поле:
Условие:
Код: Выделить всё
if(
if([513]>(SELECT MAX(app_entity_21.field_322) FROM app_entity_21 WHERE app_entity_21.parent_item_id),0,1),
"НЕТ","Сроки нарушены!!!")

Re: Сравнение дат SQL запрос
Добавлено: 16 дек 2020, 10:00
imamverdiyeveldar
vniig_admin писал(а): 16 дек 2020, 09:48
Спасибо большое ВСЕМ кто помогает, вот в итоге подпиленный код, что получилось. Но почему то возвращается ноль и никакого сравнения не происходит(
Выбрать поле:
Условие:
Код: Выделить всё
if(
if([513]>(SELECT MAX(app_entity_21.field_322) FROM app_entity_21 WHERE app_entity_21.parent_item_id),0,1),
"НЕТ","Сроки нарушены!!!")
мне кажется там надо написать WHERE app_entity_21.parent_item_id=e.id если поле 322 находится во вложенной сущности.
Re: Сравнение дат SQL запрос
Добавлено: 16 дек 2020, 10:23
support
В дополнении создайте функцию "select" которая будет выбирать значение из поля 322 из родительской сущности.
Функция вам построить подзапрос автоматически.
Затем создайте поле mysql формула где уже сравнивайте
Если нет дополнения, тогда вместо функции пишите подзапрос.
Код: Выделить всё
if([513] >=(select field_322 from app_entity_21 where id=e.parent_item_id),'...')
Re: Сравнение дат SQL запрос
Добавлено: 16 дек 2020, 11:57
vniig_admin
Еще раз и много раз спасибо! Но я новичок в SQL запросах, вроде пытаюсь оттюнить пихая в phpmyadmin. Вроде бы задача тривиальная сравнить две даты и если
дата субподряда (513) entities_id=40
больше срок окончания договора (547 - в род.сущ entities_id=21 - id срок ок-ия договора 322) то выдать "дата нарушена"
Код: Выделить всё
if([513] >=(select field_322 from app_entity_21 where id=e.parent_item_id),'ПРЕВЫШЕНА ДАТА')
методом экспериментов при создании запроса выдает следующее
хотя если убрать чек "выполнять динамически"
А если создать
функцию в ней я прописал следующее:
Код: Выделить всё
field_322 from app_entity_21 where id=e.parent_item_id
Потом создал SQL запрос:
Получил:
СПАСИБО ЕЩЕ РАЗ) И обещаю Я подтяну знания MySQL просто тут уж очень срочно надо)

Re: Сравнение дат SQL запрос
Добавлено: 16 дек 2020, 12:29
support
В функции не надо писать условий, просто поле, которое нужно выбрать.
Смотрите примеры
https://docs.rukovoditel.net.ru/index.php?p=48