Здравствуйте!
Если скажем, буду создавать таблицы с префиксом test_, как мне правильно сделать запрос, для выборки из таблиц имена которых начинаются с '^test_' ?
Я нашёл инфу для получения имён таких таблиц, но как выбрать из них - не соображу (в силу неопытности):
SELECT relname FROM pg_class WHERE relname LIKE 'test_%' AND relkind = 'r';
Выбрать из них точно также
Выбрать из них точно также как из самых обычных таблиц. Собственно вы это уже продемонстрировали запросом из таблицы pg_class, которая имеет префикс pg_
Пробовал, но ничего не
Пробовал, но ничего не получается.
Не могли бы вы дать ещё подсказку, или готовое решение ?
Вот простейшие таблицы:
Вот даже пробовал функцию написать, которая бы возвращала список таблиц а потом выбрать:
Но `list' возвращает лишь одно имя первой таблицы, и выбрать из результата функции у меня не получилось:
PS: оч нужно найти решение, а то не охота создавать одну большую таблицу (для порядка 5 миллионов записей - не сразу, но БД будет расти), - критично время выполнения запроса, вот и хочу создать несколько десятков таблиц (~ 50), и дёргать оттуда данные (в частности и из всех этих таблиц с префиксом вместе взятых)...
Буду благодарен любой вашей помощи.
FAQ почитать
http://postgresql.ru.net/docs/extented_FAQ.html#Q003
http://postgresql.ru.net/docs/extented_FAQ.html#Q004
спасибо! ну или как вариант,
спасибо!
ну или как вариант, можно формировать строку запроса типа:
Конечно хотелось как-то элегантнее решить задачу, и на SQL, но нет, на c/c++ придётся..
СПАСИБО за ответы!
вы можете использовать
вы можете использовать EXECUTE если необходимо использовать имена, генерируемые на ходу. За справкой отсылаю в документацию
СПАСИБО за подсказку! Вот
СПАСИБО за подсказку!
Вот решение (вдруг кому понадобится):
Использование функции:
SELECT * FROM prefixed_query('test_');
Вывод:
---------------------
| id | name |
-------+-------------
| 1 | test_001|
| 1 | test_002|
---------------------
PS: Ещё раз спасибо за помощь!