Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не должно быть сложно.  [new]
DenPL
Member

Откуда: Челябинск
Сообщений: 88
Здравствуйте, уважамемые знатоки.
Задача такая:
Есть список имен таблиц (table1, table2, ...., table10), в каждой из которой присутствует поле id_ent, как построить запрос который выдаст
множество всех id_ent для каждой, из учавствующих таблиц, исключая дубликаты.
3 июл 08, 13:04    [5881009]     Ответить | Цитировать Сообщить модератору
 Re: Не должно быть сложно.  [new]
C#C++
Member [заблокирован]

Откуда: Суровые северные земли
Сообщений: 2636
Курить динамический SQL + конкатенацию
3 июл 08, 13:08    [5881035]     Ответить | Цитировать Сообщить модератору
 Re: Не должно быть сложно.  [new]
C#C++
Member [заблокирован]

Откуда: Суровые северные земли
Сообщений: 2636
также посмотреть оператор UNION
3 июл 08, 13:10    [5881051]     Ответить | Цитировать Сообщить модератору
 Re: Не должно быть сложно.  [new]
DenPL
Member

Откуда: Челябинск
Сообщений: 88
Ну с union это просто, но при появлении новой таблицы придется править скрипт, а список таблиц - результат выборки из user_tab_columns всегда содержит те имена таблиц которые нужны...
3 июл 08, 13:14    [5881080]     Ответить | Цитировать Сообщить модератору
 Re: Не должно быть сложно.  [new]
-+
Guest
DenPL
Ну с union это просто, но при появлении новой таблицы придется править скрипт, а список таблиц - результат выборки из user_tab_columns всегда содержит те имена таблиц которые нужны...


Динамический SQL в курсоре
3 июл 08, 13:20    [5881135]     Ответить | Цитировать Сообщить модератору
 Re: Не должно быть сложно.  [new]
C#C++
Member [заблокирован]

Откуда: Суровые северные земли
Сообщений: 2636
DenPL
Ну с union это просто, но при появлении новой таблицы придется править скрипт, а список таблиц - результат выборки из user_tab_columns всегда содержит те имена таблиц которые нужны...

У вас есть набор имен таблиц.
Запросом
select replace(wmsys.wm_concat('select id_ent from ' || tabname), ',', ' union ')
from tables
поличаете что то вроде
'select id_ent from table1 union select id_ent from table2 ...'

Запрос не проверял, оракла нет под рукой.

далее эту строчку выполняете execute immediate
3 июл 08, 13:35    [5881241]     Ответить | Цитировать Сообщить модератору
 Re: Не должно быть сложно.  [new]
DenPL
Member

Откуда: Челябинск
Сообщений: 88
проверил, запрос работает замечательно. Большое спасибо!
3 июл 08, 15:33    [5882145]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить