|
Связывание внутренних селектов друг с другом
|
|||
---|---|---|---|
#18+
Использую Oracle 12 Имеются 3 таблицы: SOURCE_TBL, DEST_TBL, MAIN_TBL Из таблиц SOURCE_TBL и MAIN_TBL делается выборка, которая записывается в DEST_TBL Из таблицы SOURCE_TBL в цикле выбираются данные следующего типа: Код: sql 1. 2. 3. 4.
т.е. на 1 num всего 1 запись с начальной и конечной датой (это задаёт диапазон) В таблице MAIN_TBL содержаться данные следующего вида: Код: sql 1. 2. 3. 4. 5. 6. 7.
т.е. в диапазоне для num=1 в out_date имеются дырки: 03.01.2021, 04.01.2021 для num=2 тоже есть дырки: 03.02.2021, 06.02.2021, 08.02.2021, 09.02.2021 Необходимо из MAIN_TBL вывести значения с учётом каждой даты в диапазоне, т.е. должно быть так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Для того чтобы такое сделать я внутренним запросом (p2) получаю для каждого num таблицу дат в указанном в SOURCE_TBL диапазоне. Но приходится делать цикл, чтобы начальную и конечную дату передавать в этот внутренний запрос p2 т.к. используется цикл, то работает очень медленно. Подскажите знатоки как бы так всё это переписать одним селектом чтобы не нужно было использовать цикл? Вот этот работающий медленный вариант: Код: 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. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 15:57 |
|
Связывание внутренних селектов друг с другом
|
|||
---|---|---|---|
#18+
verter, для 1 01.01.2021 05.01.2021 2 03.02.2021 09.02.2021 сгенерить дни из диапазона (помоему SY разные методы приводил) и соеденить с main ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 16:05 |
|
Связывание внутренних селектов друг с другом
|
|||
---|---|---|---|
#18+
Stax, так я и генерирую их вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 16:08 |
|
Связывание внутренних селектов друг с другом
|
|||
---|---|---|---|
#18+
verter Stax, так я и генерирую их вот так: сгенерить за раз для всех num ps попробовать генерить другим методом pss если pl/sql и с циклом for i in (select num,start_date,end_date from SOURCE_TBL не соеденять таблицы, а осложнить алгоритм вставки if dat=prev dat-1 then else ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 16:20 |
|
Связывание внутренних селектов друг с другом
|
|||
---|---|---|---|
#18+
verter, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 11:13 |
|
|
start [/forum/topic.php?fid=52&msg=40093503&tid=1879946]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 234ms |
total: | 457ms |
0 / 0 |