выбрать несколько таблиц с одинаковыми именами столбцов - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь выполнить запрос к нескольким таблицам в Oracle (все из которых имеют одинаковые столбцы).

Предположим, что column1, column2 и column3 в TABLE_1, TABLE_2 и TABLE_3.

Я хочу сделать это для одного оператора без использования UNION.

Что-то вроде:

SELECT column1, 
       column2, 
       column3
 FROM (SELECT TABLE_NAME 
         FROM ALL_TABLES 
        WHERE TABLE_NAME LIKE 'TABLE_%'
      )

Возможно ли это?

Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Это плохой дизайн. Вы можете создать динамический VIEW и запросить из этого представления.

DECLARE
     v_sql   VARCHAR2(4000);

BEGIN


     SELECT
          LISTAGG('SELECT column1,column2,column3 FROM ' || table_name,
               ' UNION ALL ' || CHR(10) ) WITHIN
          GROUP(
               ORDER BY table_name
          )
     INTO v_sql
     FROM all_tables
     WHERE table_name LIKE '%TABLE_%';

     EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW my_view AS ' || v_sql;
END;
/


Select * from my_view;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...