powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помощь в составлении запроса
4 сообщений из 4, страница 1 из 1
Помощь в составлении запроса
    #39115052
tarinko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Такая ситуация. Имеется некое подобие файлового менеджера. Файлы и папки хранятся в двух табличках:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE file
(
    id SERIAL PRIMARY KEY NOT NULL,
    name VARCHAR(128) NOT NULL,
    group_id INT DEFAULT 0 NOT NULL
);

CREATE TABLE file_group
(
    id SERIAL PRIMARY KEY NOT NULL,
    name VARCHAR(128) NOT NULL,
    parent_id INT NOT NULL
);



Необходимо по списку id папок, получить id всех потомков этих папок. Т.е. рекурсивно пройтись по всем дочерним папкам и собрать файлы. Задача вводит меня в ступор, т.к. с рекурсивными запросами до конца еще не разобрался. Буду рад любой помощи.
...
Рейтинг: 0 / 0
Помощь в составлении запроса
    #39115055
tarinko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия postgresql 9.4
...
Рейтинг: 0 / 0
Помощь в составлении запроса
    #39115108
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tarinkoс рекурсивными запросами до конца еще не разобралсяДля понимания рекурсии не надо доходить до конца, достаточно понять условие перехода.
tarinkoБуду рад любой помощи.Ждешь, что тебе скопируют примеры из документации прямо в мозг?
...
Рейтинг: 0 / 0
Помощь в составлении запроса
    #39115109
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
with RECURSIVE
file_group(id, name, parent_id) as (values (2,'root',null),(3,'1',2), (4,'2',2),(5,'1.1',3),(7,'2.1',4),(8,'2.2',4)),
file (id, name,group_id) as (values (1,'file1',2),(2,'file2',8),(3,'file3',8)),

t1 as (
	select id, name, parent_id 
    
    from 
    (
    	select * from file_group
        union ALL
        select id + (select max (id) from file_group ), name, group_id from file a1 
    )
    as t3 
    
    where parent_id is null

    union ALL

    select t2.id, t2.name, t2.parent_id from     (
    	select * from file_group
        union ALL
        select id + (select max (id) from file_group ), name, group_id from file a1 
    ) as t2 
    
    join t1 on t1.id=t2.parent_id
)
select *  from t1
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помощь в составлении запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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