Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
DB2 9.5 Имеются N таблиц с полем "WRITETIME". Как получить выборку по максимальному значению этого поля из всех таблиц, где это поле встречается? Примечание: некоторые имена таблиц заключены в двойные кавычки. Я себе примерно представляю такой алгоритм: 1. Получить все имена таблиц с полем "WRITETIME" 2. Заполнить массив 3. Циклически обработать массив, складывая полученные выборки по очередной таблице вместе Вопрос: как это реализовать в DB2 или может есть способ проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 10:31 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
aquaman, Предположим, что вы нашли этот макс. значение в WRITETIME. Какую именно выборку вы хотите получить из этих таблиц по полученному значению? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 11:12 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, что-то вроде этого: Название таблицы; max(WRITETIME) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 11:38 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
UNION ALL тут использовать не могу, т.к. кол-во таблиц меняется. Да и слишком громоздко получится в любом случае. М.б. есть более изящный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 11:51 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
aquaman, Динамически текст запроса вы можете получить таким селектом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Если у вас таких таблиц десятки, то, может быть, лучше будет использовать цикл на основе запроса в with, где при каждой итерации вы будете динамически генерировать и выполнять запрос типа: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 12:11 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, 2й вариант, имхо, удобнее. Теперь, как я понимаю, нужно создать хп и циклически (Используя FOR?) обработать все таблицы, складывая результаты во временную таблицу.. А потом вывести ее содержимое. Щас буду пробовать.. Спасибо, Марк! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 13:10 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Mark Barinsteinaquaman, Если у вас таких таблиц десятки, то, может быть, лучше будет использовать цикл на основе запроса в with, где при каждой итерации вы будете динамически генерировать и выполнять запрос типа: Код: plaintext А можете привести примерно код, как это будет выглядеть? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 18:20 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2010, 18:53 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, спасибо за код. :) Все почти работает! Но... Возникла еще одна проблема.. :( Не зря я указал в начале треда, что некоторые имена таблиц заключены в двойные кавычки. А запрос имен из таблицы syscat.tables возаращает имена таблиц без кавычек. И, как следствие, появляется ошибки вида: call get_max SQL0204N "ITMUSER.KLZ_DISK" is an undefined name. SQLSTATE=42704 SQL0204N "ITMUSER.KLZ_DISK " is an undefined name. Есть идеи как с этим бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2010, 10:06 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
aquamanВозникла еще одна проблема.. :( Не зря я указал в начале треда, что некоторые имена таблиц заключены в двойные кавычки. А запрос имен из таблицы syscat.tables возаращает имена таблиц без кавычек. И, как следствие, появляется ошибки вида: call get_max SQL0204N "ITMUSER.KLZ_DISK" is an undefined name. SQLSTATE=42704 SQL0204N "ITMUSER.KLZ_DISK " is an undefined name. Есть идеи как с этим бороться? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2010, 10:19 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Ну а если у вас встретятся ещё бОльшие извращения в виде двойных кавычек в именах схемы или таблицы, то надо будет: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2010, 10:25 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Провел тест: таблицы без кавычек прекрасно видятся даже если их имена заключить в кавычки.. А вообще насчет извращений - полностью согласен. Но у вендора так - и никуда не денешься! :( Запрос уже пол-часа молотит.. 170+ таблиц, однако.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2010, 11:36 |
|
||
|
Один запрос из многих таблиц
|
|||
|---|---|---|---|
|
#18+
aquamanMark Barinstein, Провел тест: таблицы без кавычек прекрасно видятся даже если их имена заключить в кавычки.. А вообще насчет извращений - полностью согласен. Но у вендора так - и никуда не денешься! :( Запрос уже пол-часа молотит.. 170+ таблиц, однако..Я говорил про таблицы типа create table "ITMUSER""KLZ_DISK" А про время - создайте индексы на WRITETTIME в каждой таблице, если нужна скорость. Можете добавить ' with ur' в конец insert select, чтоб не блокировать таблицы, если не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2010, 12:51 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=61&tid=1602498]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 155ms |

| 0 / 0 |
