Перейти к содержимому
G_Arthur_

blog/with-recursive-in-postgresql.md

Рекурсивные запросы в PostgreSQL

1 мин чтения

Рекурсивные запросы в PostgreSQL.

Сегодня прочел одноименную статью на хабре на практике рекурсивные запросы оказались довольно просты.

Нужно помнить всего лишь

  • про синтаксис (прописывается через использование WITH c ключевым словом recursive).
  • внутри with состоит из двух подзапросов, объединенных через union.

Подзапрос 1. Это базовая или стартовая информация Подзапрос 2. Это рекурсивные данные.

Алгоритм получается примерно следующий:

  1. Вычисляем стартовую информацию.
  2. Выносим ее в рекурсивную таблицу.
  3. Используя рекурсивную таблицу, вычисляем второй подзапрос.
  4. Во втором подзапросе появились новые (отсутствовавшие) данные? a. Да. Выносим данные в рекурсивную таблицу, переходим к пункту 3. b. Нет. Выходим из рекурсии.

пример запроса

with recursive recr_table as (
    -- базовая часть
    select base_data_part.*
    from original_table_name as base_data_part
    union
    -- рекурсивная часть
    select recr_data_part.*
    from original_table_name recr_data_part
             join recr_table
                  on recr_table.parent_column = recr_data_part.children_column)
select *
from recr_table;

Похожие записи

blog/hibernate-6-and-postgresql-jsonb.md

1 мин чтения

Использование jsonb в Hibernate 6

Как работать с типом JSONB в PostgreSQL через Hibernate 6: аннотация @JdbcTypeCode, маппинг Map и кастомных классов.

blog/restore-database-dumps-for-postgres-in-docker-container.md

1 мин чтения

Restore Database Dumps for Postgres in Docker Container

Пошаговая инструкция: как скопировать дамп PostgreSQL внутрь Docker-контейнера и развернуть его через pg_restore.

blog/docker-and-postgres.md

1 мин чтения

Docker & Postgres

Как поднять контейнер с PostgreSQL в Docker, подключиться к нему и создать базу данных.