|
Поиск наружения в последовательности ДАТЫ
|
|||
---|---|---|---|
#18+
akrush, Еще вопрос по структуре. Зачем нужна ссылка на предыдущее обращение? Подозреваю что предыдущее обращение, если оно есть, просто имеет номер меньше чем у текущего на 1. Если этот так то ссылка не имеет смысла. Последнее обращение, которое с номером 0, перенумеровывается после закрытия? Даты окончания могут быть NULL? А у текущего с номером 0 дата закрытия сразу какая-то ставится или до закрытия и перенумеровки там NULL? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 04:17 |
|
Поиск наружения в последовательности ДАТЫ
|
|||
---|---|---|---|
#18+
Я так и не понял какие даты нужно править, и на какие, но найти перекрытия по датам между разными обращениями можно примерно так: Код: plsql 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Запрос выдает обращения одного дела, отсортированные в порядке создания, нулевое в конце. Для каждого обращения выводится дата окончания предыдущего обращения, и их можно сравнить. Соответственно, первое обращение напрямую не выводится, у него нет предыдущего. В реале записи без ошибок выводить скорее всего не нужно, но так как я написал - удобно для отладки. Приведенный запрос выдает такие данные: APP_NUMCAL_NUM_PRECAL_NUMDATA_E_PREDATA_SDATA_EERR64288212 30.09.201601.03.201630.04.2016data_e_pre > data_s6428822330.04.201601.05.201630.04.2016 6428823430.04.201601.05.201630.04.2016 6428824530.04.201601.05.201630.04.2016 6428825630.04.201601.05.201631.05.2016 6428826731.05.201601.06.201630.06.2016 6428827830.06.201601.07.201630.06.2016 6428828030.06.201601.07.201628.02.2017 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 04:57 |
|
Поиск наружения в последовательности ДАТЫ
|
|||
---|---|---|---|
#18+
И еще по структуре данных. Посмотрев профиль обнаружил что ты уже какое-то время копаешь эту унаследованную от предшественников структуру. Мне кажется что с датами у тебя неправильная установка. Нельзя допускать что бы дата окончания обращения была меньше даты начала, т.е. период времени отрцательный. В этом нет физического смысла. Попытка выдержать условие что дата начала следующего обращения обязательно должна быть больше даты окончания предыдущего такую фигню как отрицательный временной промежуток все равно не оправдывает. Более логично допустить равенство дат одного обращения, считая что это отображает ситуацию что обращение было закрыто в день начала. А так же допустить что в один день может быть несколько обращений. По большому счету может быть несколько активных обращений. Не знаю что там у тебя за физический смысл, но допустим было несколько заявок с разными вопросами, и по всем заявкам выполняется отдельная работа, возможно разными людьми. Активную заявку я бы искал по пустой дате окончания а не по ее номеру искуственно приянутому за уши в 0. И по ссылкам на предыдущее обращение. Я уже говорил но повторюсь, если это ссылка - то в случае физического отсутствия ссылки там должен быть NULL а не 0. Это я про обращение номер 1, там ссылка на предыдущее 0, но 0 у тебя означает последнее а не предыдущее. Соответственно: - на 0 ссылаться никто не может, оно же самое последнее - использовать для обработки цепочек рекурсивные запросы или процедуры нельзя, ибо у тебя ссылки закольцованы ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 07:18 |
|
Поиск наружения в последовательности ДАТЫ
|
|||
---|---|---|---|
#18+
fraks, Спасибо за совет. Я это понимаю, но пока это ДОС приложение я ничего поделать не могу. Это база на Clarion. Для поиска некоторых пробле использую родной конвертер в ДБФ, потом импорт в FB и уже потом начинаю искать проблемные участки. Вопросом переписывания программы под ВИН как раз занимаемся. Дату окончания нужно ставить обязательно т.к. это база по субсидиям на жилищно-комунальные услуги и период действия с момента обращения четко прописан. По вопросу структуры и полного описания БД, под новую программу, я еще буду писать т.к. понимаю что то что было нормально 20 лет назад, именно тогда была разработана эта система, сейчас уже не нормально и с СУБД типа Firebird можно реализовать что-то проще Огромное спасибо за код execute block. Я только стараюсь разобраться со всем этим и есть сложности. Теперь по моему конкретному вопросу у меня будет конкретный пример. Буду изучать. Спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 08:53 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1561976]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 419ms |
0 / 0 |