powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как лучше всего вытащить html таблицы из функции?
5 сообщений из 5, страница 1 из 1
как лучше всего вытащить html таблицы из функции?
    #39652802
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычно генерю таблицы в ПХП, а вот теперь хочу внутри БД )

вот такая ф-я:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
CREATE OR REPLACE FUNCTION func()
LANGUAGE SQL AS $$

WITH sub AS (SELECT
...тут всякие агрегаты и CASE-ы...
)

-- а дальше пытаюсь генерить саму таблицу:
SELECT
concat('<tr>
<td>', name3, '</td>
<td>', total1, '</td>
<td>', total7, '</td>
<td>', total30, '</td>
<td>', total_week, '</td>
<td>', total_month, '</td>
<td>', total_q, '</td>\n',
(CASE WHEN active IS NOT NULL THEN '<td class=''bg15''>' || active || '</td>' ELSE '<td></td>' END), -- вставить класс
'\n</tr>'
) -- concat
FROM sub

UNION ALL
SELECT concat(
'<tr class=''total''>
<td>ИТОГО:</td>
<td>', sum(total1), '</td>
<td>', sum(total7), '</td>
<td>', sum(total30), '</td>
<td>', sum(total_week), '</td>
<td>', sum(total_month), '</td>
<td>', sum(total_q), '</td>
<td>', sum(total_active), '</td>
</tr>')
FROM sub;

$$;



но так он выводит всего 1 строчку
и как бы я не крутился вокруг UNION, там 1 строчка и всё. Ну потому что надо единым текстом выводить всю таблицу.
поэтому я пытался через array_agg() + array_to_string(), но там путаница наступает при отсутствии UNION ALL
видимо надо как-то пихать в переменные, но как?
а может ещё как-то оптимально?
...
Рейтинг: 0 / 0
как лучше всего вытащить html таблицы из функции?
    #39653148
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже разобрался
...
Рейтинг: 0 / 0
как лучше всего вытащить html таблицы из функции?
    #39653610
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что примечательно, ф-я отдаёт html за 3ms, но если прописать IMMUTABLE, то за 0.02ms (!!), т.е. в 150 раз быстрее
но я не могу использовать IMMUTABLE, если в таблицах происходят изменения, так?
...
Рейтинг: 0 / 0
как лучше всего вытащить html таблицы из функции?
    #39653842
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели никто не знает?
про IMMUTABLE вот что пишут:
авторIMMUTABLE можно ставить если значение зависит только от аргумента, а не от данных БД. Она сама не будет выполнять никаких запросов в БД.
Она выполняется вообще один раз как только вычислен параметр, а если он не зависит от данных БД, то вообще посчитается на этапе планирования запроса.
но я проверял - удалял из таблицы строку и ф-я это учла тут же
...
Рейтинг: 0 / 0
как лучше всего вытащить html таблицы из функции?
    #39653933
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

А вы напишите запрос где такая функция используется несколько раз.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как лучше всего вытащить html таблицы из функции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]