SQL выбирает записи из произвольного числа одинаковых таблиц - PullRequest
0 голосов
/ 15 февраля 2010

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

[TABLE 01 $TRANSACTIONS]
[TABLE 02 $TRANSACTIONS]
...
[TABLE (n) $TRANSACTIONS]

У меня есть запрос, возвращающий нужные записи по одной таблице за раз, и я могу вручную выбрать несколько таблиц с помощью

SELECT {QUERY01} FROM [TABLE 01 $TRANSACTIONS]
UNION
SELECT {QUERY02} FROM [TABLE 02 $TRANSACTIONS]
...
SELECT {QUERY(n)} FROM [TABLE (n) $TRANSACTIONS]

Общий запрос, в который я подставляю нужное имя таблицы, составляет около 200 строк, включая функцию ROWNUMBER () / PARTITION BY, множественные объединения в связанные таблицы и некоторый порядок.

Со временем будут добавлены новые таблицы и n изменится.

Может кто-нибудь предложить способ выбора СОЮЗА записей из всех n таблиц для произвольных значений n ?

Примечание: список таблиц n можно легко получить с помощью запроса к таблице sysobjects

SELECT Name FROM sysobjects
WHERE Type = 'U'
AND Name LIKE '%$TRANSACTIONS'
ORDER BY Name

Ответы [ 2 ]

1 голос
/ 15 февраля 2010

AFAIK, лучше всего использовать ваш запрос к системным объектам, чтобы периодически генерировать новое определение представления.

Возможно, вы сможете создать триггер DDL, который запускает процедуру для повторного создания этого представления при изменении ваших таблиц - я действительно не знаю. Такие конструкции БД - крушение поезда.

0 голосов
/ 15 февраля 2010

Вы можете навести курсор на запрос sysobjects и создать оператор sql. Затем вы можете вызвать sp_executesql, чтобы запустить его. Исходя из опыта, я могу вам сказать, что это проблема в A $$ для отладки. Я также ожидал бы, что это решение развалится с любым обновлением поставщика. Удачи.

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