|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Господа, приветствую. Проблема несколькими словами... Есть таблица календаря работы человека. Всего 360 дней на человека с несколькими вахтами работы, длящиеся приблизительно дней 40. Есть определенные маркеры начала и конца вахт (Пр и От) Как вывести в одной строке в двух полях дату начала и дату окончания вахты человека, ну и по строкам эти несколько вахт за год? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:30 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, Это скрин формы на перекрестном запросе. В таблице поля Id, Работник, Дата, Значение ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:32 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, Я делал на промежуточных запросах выделения начала и конца вахт 00tetsPr - начало вахты 00tetsOt - конец вахты Код: sql 1. 2. 3. 4. 5.
Но с вложенным запросом работает медленно....т.к. просчет и вывод конечного результата на лету, скорость не устраивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:48 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Я один не вижу работника в перекрестном запросе? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:49 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, наверное, было понятнее со структурой таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:51 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Озверин, Выбор сотрудника выше. Это просто скрин (обрезанный) формы календаря работы сотрудников Вопрос не к конкретном сотруднике ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:52 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Сперва надо выбросить перекрёстный запрос. Для работы нужна плоская таблица (Дата-Маркер). Первым делом двумя подзапросами выбираются начала и концы вахт. Затем они связываются по условию Начала.Дата < Концы.Дата. После этого группируются по Начала.Дата, и берётся MIN(Концы.Дата). Всё, у тебя в руках периоды вахт. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:00 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Т.е. если есть таблица Код: vbnet 1.
то Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Есссно в набор попадут только полные вахты. Если есть вахта, переходящая границу года - можно в подзапросы добавить виртуальные записи за 1 января и 31 декабря (UNION). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:06 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Озверин, Прошу прощения, вот пример бд 00tetsPr- определение начала вахты 00tetsOt - определение конца вахты 01testOtPr - собирал их в один. 02CalendarWorkerYes - сохраняю график рабочих дней в таблицу. Это старая версия, в ней есть минусы, из за нее и начал переделывать. Просто там дальше я ищу пересечение этих данных с другими 01testOtPr_ - новая попытка вытягивать период, вот сейчас выполнение запроса тянет на сек 30-35 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:19 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:19 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:19 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, Не поместилось в одном... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:20 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
AkinaСперва надо выбросить перекрёстный запрос. Для работы нужна плоская таблица (Дата-Маркер). Она и есть - CalendarWork AkinaПервым делом двумя подзапросами выбираются начала и концы вахт. Затем они связываются по условию Начала.Дата < Концы.Дата. После этого группируются по Начала.Дата, и берётся MIN(Концы.Дата). Всё, у тебя в руках периоды вахт. У меня так и реализовано сейчас, только не вложенными, но медленно работает... и еще условие, что не обязательно первой в году будет дата начала вахты. Вахта может заканчиваться с прошлого года. Вообще суть вот в чем. Есть вахты сотрудников, и есть периоды возможности проверок ТБ, например, работников. Нужно найти в этих 2 таблицах (вахт и проверок) даты пересечения, что бы назначить дни прохождения проверок. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:30 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Akina Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Спасибо! Переделал запрос по вашему образцу, летает. Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:50 |
|
Выборка нескольких пересечений периодов в течение года
|
|||
---|---|---|---|
#18+
Игортан, на одного из работников задвоен весь месяц--это у вас допустимо WorkergmdValueCal73875120187111738751201871127387512018721173875120187212738751201873117387512018731273875120187411738751201874127387512018751173875120187512738751201876117387512018761273875120187711738751201877От73875120187811738751201878В738751201879В738751201879От ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:43 |
|
|
start [/forum/topic.php?fid=45&fpage=37&tid=1610880]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 461ms |
0 / 0 |