Страница 1 из 2

Сравнение дат SQL запрос

Добавлено: 15 дек 2020, 08:55
vniig_admin
Подскажите пожалуйста голову уже сломал.

Пытаюсь сделать SQL запрос.

Есть дата окончания работ субподряда [513] дата с кал
Есть срок окончания [547] но Значение из родительской сущности в Род.сущ. там поле дата с кал. [322]

ID страницы родительской сущности 21

В выбрать поле Я написал:

Код: Выделить всё

if([513]>=[547], '<span color="red">Сроки нарушены!!!</span>')
В поле условие:

Код: Выделить всё

e.21=parent_item_id
ну и окрасить в красный цвет, читал еще можно сделать с помощью 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),
"НЕТ","Сроки нарушены!!!")
:roll:

Изображение

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),
"НЕТ","Сроки нарушены!!!")
:roll:

Изображение
мне кажется там надо написать WHERE app_entity_21.parent_item_id=e.id если поле 322 находится во вложенной сущности.

Re: Сравнение дат SQL запрос

Добавлено: 16 дек 2020, 10:23
support
В дополнении создайте функцию "select" которая будет выбирать значение из поля 322 из родительской сущности.
Функция вам построить подзапрос автоматически.
Затем создайте поле mysql формула где уже сравнивайте

Код: Выделить всё

if([513] >={id функции},'...')
Если нет дополнения, тогда вместо функции пишите подзапрос.

Код: Выделить всё

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 запрос:

Изображение

Код: Выделить всё

if([513] >={4},'Дата превышена')
Получил:

Изображение

СПАСИБО ЕЩЕ РАЗ) И обещаю Я подтяну знания MySQL просто тут уж очень срочно надо) :oops: :roll:

Re: Сравнение дат SQL запрос

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