Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2018, 20:31   #1
fusic
 
Регистрация: 28.02.2018
Сообщений: 7
По умолчанию Сложный запрос с временнЫми параметрами

Здравствуйте!
Помогите решить:

всЁ происходит в Access 2003

имеем таблицу Scene сценариев работы осветительных прибопров где указано

уникальный ID
имя Scene_Name
доступность Enabled (логическое поле True/False)
период действия date_start и date_stop
время действия time_start и time_stop
дни недели Mon, Tue, Wed, Thu, Fri, Sat, Sun в которые действует сценарий (логические поля True/False)

период действия по датам и времени разных сценариев могут накладываться друг на друга (потому что пользователь
создает новый сценарий назначает ему период действия не заботясь об удалении старых сценариев)

Необходимо, имея текущие значения даты, времени и дня недели выбрать сценарий удовлетворяющий
всем условиям НО только тот ЕДИНСТВЕННЫЙ который "начался" последним для заданных условий (дата/время/день недели)

тестовая таблица

id scene_name Enabled date_start date_stop time_start time_stop Mon Tue Wed Thu Fri Sat Sun
1 global Истина 01.01.1900 31.12.2100 0:00 23:59 Истина Истина Истина Истина Истина Истина Истина
3 work Истина 01.01.1900 31.12.2100 9:00 18:00 Истина Истина Истина Истина Истина Ложь Ложь
4 dinner Истина 01.01.1900 31.12.2100 12:00 14:00 Истина Истина Истина Истина Истина Ложь Ложь
5 alarm1 Истина 01.01.2018 15.07.2018 6:00 6:15 Истина Истина Истина Истина Истина Ложь Ложь
6 alarm2 Истина 15.08.2018 15.07.2019 6:00 6:15 Истина Истина Истина Истина Истина Ложь Ложь
7 holiday Истина 01.01.2018 31.12.2100 8:00 23:00 Ложь Ложь Ложь Ложь Ложь Истина Истина
8 night Истина 01.01.1900 31.12.2100 23:01 5:59 Истина Истина Истина Истина Истина Истина Истина
9 test Истина 01.03.2018 01.05.2018 12:30 13:00 Истина Истина Истина Истина Истина Ложь Ложь
10 test1 Истина 01.03.2018 01.05.2018 12:35 13:05 Истина Истина Истина Истина Истина Ложь Ложь
11 test3 Истина 01.02.2018 01.05.2018 12:35 13:05 Истина Истина Истина Истина Истина Ложь Ложь

в четверг 21 марта в 12:50 должен быть выбран сценарий test1 id=10 т.к. по дате он начался последним (01.03.18) и по времени то же (12:35).
Изображения
Тип файла: jpg SCENE.jpg (72.1 Кб, 150 просмотров)
fusic вне форума Ответить с цитированием
Старый 22.03.2018, 20:50   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Условие выборки в таком духе, на sql сам переводи
Код:
Enabled И 
ДАТА между date_start и date_stop И
ВРЕМЯ между time_start и time_stop И
((Mon И ДЕНЬ=понедельник) ИЛИ
 (Tue И ДЕНЬ=вторние) ИЛИ
...
 (Sun И ДЕНЬ=воскресенье))
Сортировка по убыванию date_start и убыванию time_start
Берется первая строка выборки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.03.2018, 15:14   #3
fusic
 
Регистрация: 28.02.2018
Сообщений: 7
По умолчанию

Спасибо, разобрался.
Ключевые моменты это DESC и TOP 1
fusic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сложный запрос munhauz SQL, базы данных 7 21.11.2013 20:51
не сложный запрос -=Andriushka=- SQL, базы данных 0 03.05.2013 20:26
сложный запрос Deeller БД в Delphi 3 29.04.2011 19:25
Сложный запрос templton Microsoft Office Access 8 21.04.2011 13:43
Сложный запрос Kostya777 Microsoft Office Access 1 07.12.2010 12:02