Похожие чаты

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

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

13 просмотров

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

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

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

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

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

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
70
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Conversation at a festival with a non-crpto person (not a normie by any stretch, though): * person: tell me about crypto, me: ok, the original idea is p2p sound money for the...
molecular#123 🐓
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Люди добрые, помогите с идеями, потому что свои закончились. У клиента падает софтина в момент инициализации модуля OtlEventMonitor на RegisterWindowMessage('Gp/OtlTaskEvents/...
Михаил Усков
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
2
Today, DENT achieved a significant step forward in DENTX adoption 🥳 Getting DENTX and starting staking is much easier: DENTX is available on Uniswap! Everyone can swap their ...
Thomas
3
I bought some PHA tokens on Kucoin, which is the best wallet to store and easy to use?
AMR
19
Карта сайта