|
|
|
Помогите построить динамический запрос
|
|||
|---|---|---|---|
|
#18+
Добрый день. У меня есть следующая таблица: CREATE TABLE "Journal" ( "table" character varying(50), "ID_in_table" integer ) В колонке "table" находятся названия таблиц из этой же БД. В колонке "ID_in_table" находятся id из этих таблиц. Например: INSERT INTO "Journal"("table", "ID_in_table") VALUES ('Journal01', 1); INSERT INTO "Journal"("table", "ID_in_table") VALUES ('Journal02', 1); Во всех таблицах, названия которых есть в Journal.table есть колонки: 1. "date" date 2. "form" character varying(7) Например: CREATE TABLE "Journal01" (date date,form character varying(7)); CREATE TABLE "Journal02" (date date,form character varying(7)); INSERT INTO "Journal01"(id, date, form) VALUES (1, '2015-08-18', 'Док.№1'); INSERT INTO "Journal02"(id, date, form) VALUES (1, '2015-08-19', 'Док.№2'); Как мне сформировать запрос, что бы он вывел следующую таблицу: 1. Journal.table 2. Journal.ID_in_table 3. Таблица_из_table.date 4. Таблица_из_table.form Select Journal.table, Journal.ID_in_table, Таблица_из_table.date, Таблица_из_table.form From Journal Left join Journal.table as Таблица_из_table on Таблица_из_table.id = Journal.ID_in_table 'Journal01', 1, '2015-08-18', 'Док.№1' 'Journal02', 1, '2015-08-19', 'Док.№2' Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 13:32 |
|
||
|
Помогите построить динамический запрос
|
|||
|---|---|---|---|
|
#18+
ZiBДобрый день. У меня есть следующая таблица: CREATE TABLE "Journal" ( "table" character varying(50), "ID_in_table" integer ) В колонке "table" находятся названия таблиц из этой же БД. В колонке "ID_in_table" находятся id из этих таблиц. Например: INSERT INTO "Journal"("table", "ID_in_table") VALUES ('Journal01', 1); INSERT INTO "Journal"("table", "ID_in_table") VALUES ('Journal02', 1); Во всех таблицах, названия которых есть в Journal.table есть колонки: 1. "date" date 2. "form" character varying(7) Например: CREATE TABLE "Journal01" (date date,form character varying(7)); CREATE TABLE "Journal02" (date date,form character varying(7)); INSERT INTO "Journal01"(id, date, form) VALUES (1, '2015-08-18', 'Док.№1'); INSERT INTO "Journal02"(id, date, form) VALUES (1, '2015-08-19', 'Док.№2'); Как мне сформировать запрос, что бы он вывел следующую таблицу: 1. Journal.table 2. Journal.ID_in_table 3. Таблица_из_table.date 4. Таблица_из_table.form Select Journal.table, Journal.ID_in_table, Таблица_из_table.date, Таблица_из_table.form From Journal Left join Journal.table as Таблица_из_table on Таблица_из_table.id = Journal.ID_in_table 'Journal01', 1, '2015-08-18', 'Док.№1' 'Journal02', 1, '2015-08-19', 'Док.№2' Заранее благодарю. Краткий ответ достаточный для вашего уровня знаний - никак и даже думать в сторону такого дизайна забудьте. Подробный ответ - подобные схемы можно делать через наследование таблиц и использование tableoid в условиях join (но это уже высший пилотаж и в общем не рекомендуемое к использованию решение). -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 13:43 |
|
||
|
Помогите построить динамический запрос
|
|||
|---|---|---|---|
|
#18+
ZiBД Как мне сформировать запрос, что бы он вывел следующую таблицу: 1. Journal.table 2. Journal.ID_in_table 3. Таблица_из_table.date 4. Таблица_из_table.form Заранее благодарю. Через запрос - никак. Нужно писать ХП на plpgsql, который бы "собирал" данные со всех табличек. Только по производительности это будет "ад". :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2015, 15:15 |
|
||
|
Помогите построить динамический запрос
|
|||
|---|---|---|---|
|
#18+
Дело в том, что в приложении уже написан динамический запрос, но производительность ужасная. Думал хоть как-то можно ускорить формирование общего журнала различной структуры документов на уровне самой БД. А если я из всех таблиц JournalХХ сделаю одну вьюху через union all это должно быть быстрее? Но вот количество таблиц JournalХХ не константа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 09:03 |
|
||
|
Помогите построить динамический запрос
|
|||
|---|---|---|---|
|
#18+
ZiBДело в том, что в приложении уже написан динамический запрос, но производительность ужасная. Думал хоть как-то можно ускорить формирование общего журнала различной структуры документов на уровне самой БД. А если я из всех таблиц JournalХХ сделаю одну вьюху через union all это должно быть быстрее? Но вот количество таблиц JournalХХ не константа. вам максим уже объяснил -- ленивый способ сделать "юнион олл" от неконстанты -- унаследовать в части (date,form ) всё от общего предка. после чего соединяться "с предком" по [schema.]"table"::regclass = tableoid. сами tableoid в таком виде запихать в чеки (почему оно там не изначально -- х.з.) и динамика исчезнет. но появятся другие проблемы это раз во вторых -- не понял , что именно вы ускоряете. какие-то конкретные подвыборки [какие конкретно], или получение всего обо всём разом многомиллионной простынёй -- тут как бы разные подходы к оптимизации напрашиваются, ибо задачи в корне разные. 2.1. ну и тут возникнет что-то про индексные поиски для частных задач. и методы индексации под задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2015, 15:44 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=106&tid=1997810]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 373ms |

| 0 / 0 |
