Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Циклический запрос к БД / 10 сообщений из 10, страница 1 из 1
14.09.2016, 11:06
    #39308875
dimon-hacker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
Добрый день, уважаемые форумчане.
Вопрос в следующем
имеется таблица с правилами для создания расписания.
фото прикреплено
Правила таковы:
имеется время начала работы, время конца работы, рабочий интервал, и перерывы
Можно ли средствами MySQL получить список доступного времени который входит в рабочее время с учетом перерывов? Или это лучше запрограммировать во внешнем приложении?
Список доступного времени на выходе примерно такой
8:00;
8:15;
...
11:45;
13:00;
....
19:45
...
Рейтинг: 0 / 0
14.09.2016, 12:57
    #39308971
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
Да, можно.
dimon-hackerфото прикрепленоПо фотографии не лечим. Показывайте DDL таблицы и пример наполнения в форме INSERT INTO.
...
Рейтинг: 0 / 0
14.09.2016, 13:35
    #39309002
dimon-hacker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
Akina,
Таблица заполняется из внешней проги, запрос добавления
string.Format("insert into ris.device_work_sched values({0},{1},'{2}','{3}','{4}',{5},'{6}','{7}',{8});", 0, id_app, start_time, end_time, work_interval, isActive, service_time, name, day_of_week);
Те значения которые не в апострофах - INT , остальные - VARCHAR
...
Рейтинг: 0 / 0
14.09.2016, 13:59
    #39309023
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
По фотографии не лечим .
...
Рейтинг: 0 / 0
14.09.2016, 14:05
    #39309028
dimon-hacker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
Akina,
Вот дамп таблицы
...
Рейтинг: 0 / 0
14.09.2016, 14:24
    #39309045
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
А просто выложить очищенный от хлама дамп не судьба?
вот так, например
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
CREATE TABLE `device_work_sched` (
  `id` int(11),
  `id_app` int(11),
  `start_time` varchar(5),
  `end_time` varchar(5),
  `work_interval` varchar(5),
  `is_active` tinyint(4),
  `service_time` varchar(150),
  `uid` varchar(50),
  `day_of_week` int(1),
  PRIMARY KEY (`id`),
  UNIQUE KEY `Unique` (`id_app`,`day_of_week`)
);

INSERT INTO `device_work_sched` (`id`, `id_app`, `start_time`, `end_time`, `work_interval`, `is_active`, `service_time`, `uid`, `day_of_week`) VALUES
	(16, 9, '08:00', '15:00', '00:15', 0, '10:00-11:10;', 'conquest', 1),
	(18, 9, '08:00', '15:00', '00:30', 1, '09:00-09:10;', 'conquest', 2),
	(19, 6, '08:00', '20:00', '00:30', 1, '12:00-14:00;', 'conquest', 3),
	(22, 9, '08:00', '20:00', '00:30', 1, '', 'conquest', 7),
	(23, 9, '08:00', '20:00', '00:30', 1, '14:00-16:00;16:35-17:00;18:30-18:40;18:50-19:00;', 'conquest', 3),
	(44, 9, '08:00', '20:00', '00:30', 1, '14:00-16:00;16:35-17:00;', 'conquest', 6),
	(75, 7, '10:00', '20:00', '00:10', 0, '13:00-14:00', 'conquest', 1),
	(76, 7, '10:00', '20:00', '00:10', 0, '13:00-14:00', 'conquest', 2),
	(77, 1, '08:00', '20:00', '00:15', 1, '12:00-13:00;15:00-19:00;', 'conquest', 1),
	(78, 1, '08:00', '20:00', '00:15', 1, '12:00-13:00', 'conquest', 2),
	(79, 1, '08:00', '20:00', '00:15', 1, '12:00-13:00', 'conquest', 3),
	(80, 1, '08:00', '20:00', '00:15', 1, '12:00-13:00', 'conquest', 4),
	(81, 1, '08:00', '20:00', '00:15', 1, '12:00-13:00', 'conquest', 5),
	(97, 9, '08:00', '20:00', '00:30', 1, '14:00-16:00;17:00-18:00;', 'conquest', 4),
	(98, 9, '08:00', '20:00', '00:30', 1, '', 'conquest', 5),
	(133, 4, '10:00', '20:00', '00:30', 1, '10:30-11:00;12:30-13:00;15:30-16:00;', 'conquest', 1),
	(134, 4, '10:00', '20:00', '00:20', 1, '10:05-13:00;', 'conquest', 2),
	(184, 8, '10:00', '14:00', '00:10', 1, '', 'conquest', 1),
	(185, 8, '10:00', '14:00', '00:10', 1, '', 'conquest', 4);


Первый же вопрос: такая [censored] структура - догма, или можно её изменить? Хранение CSV-мультизначений в поле service_time очень усложнит запрос.
И второй: все значения времени такие "кратные", или возможны любые значения?
...
Рейтинг: 0 / 0
14.09.2016, 14:40
    #39309055
dimon-hacker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
Akina,

Таблица еще в разработке, поэтому можно менять, хотя и придется переписывать некоторые куски кода уже заточенные под нее.
Время может быть любым кратным рабочему интервалу, который !=0 и < 3 часов
...
Рейтинг: 0 / 0
14.09.2016, 14:43
    #39309059
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
dimon-hackerТаблица еще в разработке, поэтому можно менять
Настоятельно рекомендую вынести service_time в отдельную таблицу и поделить на два поля (начало и конец). Упростишь себе жизнь в разы.
Также рекомендую завести служебную таблицу (в этой или служебной БД) с INT от 0 до, скажем, 99. Проще использовать готовую, чем генерить её в рантайме в запросе. А она потребуется.
...
Рейтинг: 0 / 0
14.09.2016, 14:54
    #39309071
dimon-hacker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
Akina,

Насчет сервис тайма согласен, ведь решение сделать ее мультизначной пришло уже после того как большая часть программы была написана, поэтому просто добавили в нее значения. Думаю придется править код...
А насчет от 0 до 99 пока не врубился для чего? Видимо чтобы циклом бегать?
...
Рейтинг: 0 / 0
14.09.2016, 15:09
    #39309093
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Циклический запрос к БД
dimon-hackerА насчет от 0 до 99 пока не врубился для чего?
У тебя стоИт задача генерации нескольких значений по формуле
start_time + N * delay_time
Можно, конечно, замутить цикл в процедуре, но гораздо проще в запросе брать значения N из готовой таблицы.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Циклический запрос к БД / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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