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

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
vniig_admin
Сообщения: 8
Зарегистрирован: 14 дек 2020, 16:36
Имя: Системный Администратор
Откуда: Санкт-Петербург
Организация: ВНИИГ им. Б.Е.Веденеева
Контактная информация:

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

Сообщение vniig_admin »

Подскажите пожалуйста голову уже сломал.

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

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

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

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

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

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

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

e.21=parent_item_id
ну и окрасить в красный цвет, читал еще можно сделать с помощью CONCAT(). Помогите пожалуйста. Спасибо!
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

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

Сообщение nruslan2 »

В описании к полю "Значение из родительской сущности" сказано "Данный тип поля предназначен для отображения значения из родительской сущности. Обратите внимание, что данный тип поля нельзя применить в формулах. Чтобы использовать в формуле значение из родительской сущности, используйте функцию SELECT."

Так что тут немного надо 2а SQL запросами:
Один который забирает данные (он же будет вложенным)
Второй Ваш сравнение (в него как раз и вложить первый).
Аватара пользователя
vniig_admin
Сообщения: 8
Зарегистрирован: 14 дек 2020, 16:36
Имя: Системный Администратор
Откуда: Санкт-Петербург
Организация: ВНИИГ им. Б.Е.Веденеева
Контактная информация:

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

Сообщение vniig_admin »

Большое спасибо за быстрый ответ, буду пробовать!)))
Аватара пользователя
vniig_admin
Сообщения: 8
Зарегистрирован: 14 дек 2020, 16:36
Имя: Системный Администратор
Откуда: Санкт-Петербург
Организация: ВНИИГ им. Б.Е.Веденеева
Контактная информация:

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

Сообщение vniig_admin »

Я вообще в правильном направлении копаю?

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

Изображение
imamverdiyeveldar
Сообщения: 403
Зарегистрирован: 01 мар 2019, 08:57
Имя: Эльдар Имамвердиев
Откуда: Азербайджан, Баку
Контактная информация:

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

Сообщение 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)
Аватара пользователя
vniig_admin
Сообщения: 8
Зарегистрирован: 14 дек 2020, 16:36
Имя: Системный Администратор
Откуда: Санкт-Петербург
Организация: ВНИИГ им. Б.Е.Веденеева
Контактная информация:

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

Сообщение 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:

Изображение
imamverdiyeveldar
Сообщения: 403
Зарегистрирован: 01 мар 2019, 08:57
Имя: Эльдар Имамвердиев
Откуда: Азербайджан, Баку
Контактная информация:

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

Сообщение 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 находится во вложенной сущности.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

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

Сообщение support »

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

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

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

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

if([513] >=(select field_322 from app_entity_21 where id=e.parent_item_id),'...')
Аватара пользователя
vniig_admin
Сообщения: 8
Зарегистрирован: 14 дек 2020, 16:36
Имя: Системный Администратор
Откуда: Санкт-Петербург
Организация: ВНИИГ им. Б.Е.Веденеева
Контактная информация:

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

Сообщение 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:
Последний раз редактировалось vniig_admin 16 дек 2020, 12:49, всего редактировалось 1 раз.
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

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

Сообщение support »

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