Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Получение результата из множественного вызова функции, возвращающей таблицу.  [new]
deadka
Member

Откуда: Новосибирск
Сообщений: 28
Доброго времени суток.

Исходные данные: есть таблица t(id int primary key).
Есть функция f(id int), которая возвращает таблицу из двух полей, количество возвращаемых строк неизвестно.

Нужно получить все таблицы, которые возвращает функция f, объединенные в одну таблицу.

Вижу два варианта:

1) SELECT t.id, m.f1, m.f2 FROM t JOIN f(t.id) AS m ON 1 = 1;

2) хранимка, в которой курсором пробегаем по таблице t, нужное количество раз вызываем f и добавляем результат к возвращаемому массиву.

В 9.6 join-овый отработал быстрее.

Нет ли идей/инфы насчет best pratices подобной задачи?

Заранее спасибо.
22 сен 17, 21:08    [20817336]     Ответить | Цитировать Сообщить модератору
 Re: Получение результата из множественного вызова функции, возвращающей таблицу.  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 970
deadka,

Мне кажется LATERAL джойн с функцией (ваш #1 вариант) тут уместнее.
22 сен 17, 21:24    [20817358]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить