|
|
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
Есть таблица FILES с полями (SRC, SEQ), где SRC - какое-то имя, а SEQ - это номер файла, который поступил от SRC. Для каждого из SRC создается в таблице FILES запись, в которой указывается номер пришедшего от него файла. Номера должны быть последовательными. Как написать запрос, который выводил бы номера SEQ (их диапазон!) для данного SRC, которые были пропущены? Следующий запрос выводит лишь номера последовательностей, с которых начинается диапазон пропущенных файлов (но не сам диапазон): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:06 |
|
||
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
Так я не понял что ты конкретно хочешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:12 |
|
||
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
Я бы каким-либо образом получил recordset из всем чисел между min(seq)..max(seq), после чего сравнивал бы его с FILES. Внешним соединением, not exist или еще как. Это для вывода всего диапазона. А для вывода границ диапазона дырок смотри LAG/LEAD Functions: http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96520/analysis.htm#15913 Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:47 |
|
||
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
Пример Дениса очень интересный! Спасибо, постараюсь разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:56 |
|
||
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
В общем виде, извратиться можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Получишь диапазоны дырок ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 21:07 |
|
||
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
Кстати, тоже весьма оригинально ) Хоть и запутанно )) Но зато без использования незнакомых мне case, lag и lead ) Эти самые case, lag и lead - они только для Oracle или являются стандартом SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 11:27 |
|
||
|
Селект для выделения пропущенных последовательностей
|
|||
|---|---|---|---|
|
#18+
LAG & LEAD - только оракловые функции, появились в Oracle 8.1.6: http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/preface.htm#968873 Выражение CASE входит в стандарт ANSI SQL 92 (SQL-2)., но в Oracle появилось опять же начиная с версии 8.1.6, смотри по этой же ссылке чуть ниже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 11:47 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2809&tid=1991764]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 286ms |

| 0 / 0 |
