Похожие чаты

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

затруднения. Приведу пример двух таблиц в упрощённом виде:
```
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 ответов

21 просмотр

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

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

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

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

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

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

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

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

30500 за редактор? )
Владимир
47
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Anyone else having this error when trying to make transactions?
Datzel
11
Question: How viable is it to use Anvil as the backend infrastructure for managing a TradFi portfolio, while integrating Flexa for instant liquidity and payment solutions? Cou...
Kevin
2
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта