|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
Есть таблица в которой хранятся: сотрудник, должность, начало, конец. Надо выбрать по сотрудникам всех кто работает в более чем одной должности и по позициям все на которые назначены более одного работника (в любой из месяцов). Надо чтобы ДО инсерта или апдейта проверить и предотварить создание "оверлапов". Как это сделать? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:15 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
Вы уже не можете написать простой запрос на поиск пересекающихся периодов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:22 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
PS: Glory, здравствуйте. хотел в первом посте поприветствовать, но подумал - а вдруг пронесет.. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:27 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
- Доброго здоровья ! - Не дождетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:28 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
Запомните простое правило - интервалы перекрываются, если начало первого меньше или равно концу второго вместе с тем, что начало второго меньше или равно концу первого. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 13:56 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
Владислав Колосов, можно лаконичный пример на поиск итоговых начала и конца пересекающихся интервалов? Задача подвернулась: Дана таблица с двумя полями. Первое поле - дата начала события, второе - окончания. События расположены в произвольном порядке, могут пересекаться, одно событие может включать в себя другое и т.д. Необходимо вывести набор дат начала и окончания итогового, объединенного события. Например, если входные данные 01.09.2017 10.12.2020 03.08.2017 09.01.2019 12.12.2022 10.05.2023 04.01.2000 05.07.2001 01.06.2001 05.08.2001 Результат должен быть 04.01.2000 05.08.2001 03.08.2017 10.12.2020 12.12.2022 10.05.2023 Желательно не использовать в решении циклы и курсоры. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 13:26 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 13:51 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
dab2 Желательно не использовать в решении циклы и курсоры. Ну так self join с условием, которое Владислав упоминал и выборка минимального начала и максимального конца. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 13:58 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
fkthat, Код: sql 1. 2. 3.
Даты.дата1 Даты.дата2 Даты_1.дата1 Даты_1.дата204.01.2000 05.07.2001 01.06.2001 05.08.200104.01.2000 05.07.2001 04.01.2000 05.07.200101.06.2001 05.08.2001 01.06.2001 05.08.200101.06.2001 05.08.2001 04.01.2000 05.07.200103.08.2017 09.01.2019 03.08.2017 09.01.201903.08.2017 09.01.2019 01.09.2017 10.12.202001.09.2017 10.12.2020 03.08.2017 09.01.201901.09.2017 10.12.2020 01.09.2017 10.12.202012.12.2022 10.05.2023 12.12.2022 10.05.2023 Такой результат получается следуя этому совету. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 21:15 |
|
Найти перекрытия в таблице периодов
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4.
Как такой вариант? Результат: дата1 дата22017-08-03 2019-01-09 2000-01-04 2001-07-05 Но есть одно НО - интервал без перекрытий не отображается: 12.12.2022 10.05.2023 Эффективность на больших данных не тестировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2020, 22:45 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1685357]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 162ms |
0 / 0 |