Похожие чаты

Всем привет) Есть интересный вопрос и у меня он вызвал

затруднения. Приведу пример двух таблиц в упрощённом виде:
```
Table A:
id: str
parent_id: Optional[str]
level: int
parent = relationship('A')
children Mapped[list['A'] = relationship('A')


Table B:
id: str
a_id: ForeignKey('a.id')

Таблица B относится к А как M:1

Суть в чём. Необходимо вывести от передаваемого уровня(к примеру идёт вложенность 1-ого до 15-ого уровня и пусть я передаю 1-ый уровень) всех children. Это не проблема. Но мне нужно посчитать для первого уровня общее количество func.count(b.id). То есть логично, что для 1-ого уровня это будут все, которые относятся от 1 до 15 уровня. 2-ых уровней таблицы А может быть несколько. И нужно, отдельно для каждого посчитать от 2 уровня до 15. И хотелось бы всё это вернуть одним запросом. Господа, как?)))

5 ответов

11 просмотров

Рекурсивным cte

Можно сначала развернуть дерево полностью добавив к каждой итерации разворачивания столбец с числом, соответствующим уровню вложенности, потом джойнить B, а потом только считать count

Igor'-Pypkin 🫥 Автор вопроса
Artemiy
Можно сначала развернуть дерево полностью добавив ...

давай всё же на ты) Вся проблема в том, что к каждому уровня А, относится определённое количество Б записей. И если считать всё рекурсивно, нужно будет грузить это всё в память. С вариантом cte это можно избежать, а вот как избежать это с sql запросом(хотя знаю, что должен быть способ это всё посчитать одним запросом:)), я хз)

Igor'-Pypkin 🫥 Автор вопроса
Artemiy
Так CTE это же всё равно часть SQL-запроса

да, пойми пжл правильно, тот подход который ты посоветовал, он подходит и закрывает полностью мой кейс. Сейчас мой вопрос скорее из любопытства, как бы это можно было улучшить

Похожие вопросы

Обсуждают сегодня

For managing user-generated content rights in gaming? 🤯🚀
Brian
37
Do we have a Chinese community here?
迪迦
20
@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Why binance delisting the token?
🅰🅽🅳🆁🅴🆆
14
Hi is Atomic wallet safe to exchange btc to xmr?
Regex
20
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Hello, Ergo Investor here. Had a few questions for the leadership of the project, from what I’ve seen @kushti_ru , @Armeanio @dadreboi In one sentence, what is your vision f...
A
13
Is UniBright Freequity an active live product ? A friend here in Asia was discussing the Tokenisation of RWA’s in his case Real Estate as he’s a developer with numerous overs...
Digital Trust
5
Карта сайта