Похожие чаты

А из разных таблиц, просто перечисляем их в select(Table1, Table2...)

?

15 ответов

11 просмотров

Ты SQL знаешь? Про джойны слышал?

✖️-✖️ Автор вопроса
Pavel Павлик
Ты SQL знаешь? Про джойны слышал?

Только вкатываюсь в бек, джоины слышал только как опция для получения данных связанной таблицы )

✖️ ✖️
Только вкатываюсь в бек, джоины слышал только как ...

Надо в начале изучить SQL, а только потом приступать к изучению алхимии

✖️ ✖️
Только вкатываюсь в бек, джоины слышал только как ...

Я делаю рекурсивный CTE, который должен быть подзапросом, а потом его аггрегирую в array_agg: select id, (with recursive visual_path (id, title, type, parent_id) as ( select anchor.id as id, anchor.title as title, anchor.type as type, anchor.parent_id as parent_id from "location" as anchor where anchor.id = "location".id union select "recursive".id as recursive_id, "recursive".title as recursive_title, "recursive".type as recursive_type, "recursive".parent_id as recursive_parent_id from "location" as "recursive" join visual_path on visual_path.parent_id = recursive.id ) select array_agg(visual_path) FROM visual_path ) from "location"; И, как видишь, where anchor.id = "location".id должен ссылаться на поле из внешний запроса from "location". Но он на него не ссылается и просто аггрегирует все записи из БД

Ivan Butskiy
Я делаю рекурсивный CTE, который должен быть подза...

Когда ты делаешь В запросе select anchor.id as id, anchor.title as title, anchor.type as type, anchor.parent_id as parent_id from "location" as anchor where anchor.id = "location".id "location".id это location из самого запроса, а не самого верхнего. Попробуй алиасы расставить

Pavel Павлик
Когда ты делаешь В запросе select an...

Ну у меня же CTE идет как подзапрос, верно? Он же обернут скобками

При том, что выражение where anchor.id = "location".id фильтрует по "id" из внешнего запроса

Ivan Butskiy
При том, что выражение where anchor.id = "location...

Ну, я не знаю. Попробуй отдельные подзапросы погонять

Ivan Butskiy
Это как?

К примеру, взять cte, заменить = "location".id на конкретный айди из базы и посмотреть, что он выдает. Аналогично, можно поступить и с любым вложенным подзапросом

Ivan Butskiy
А, ну так работает как надо

Ну, это что-то очень странное. Мне сложно сказать, в чем тут проблема, посольку я данных не вижу и не особо понимаю, что у тебя там с доменом

Pavel Павлик
Ну, это что-то очень странное. Мне сложно сказать,...

Ну вот как я формирую запрос: anchor = aliased(Location, name='anchor') anchor = anchor.query\ .filter(anchor.id == 418)\ .with_entities(anchor.id, anchor.title, anchor.type, anchor.parent_id)\ .cte('visual_path', recursive=True) recursive = aliased(Location, name='recursive') recursive_part = recursive.query\ .with_entities(recursive.id, recursive.title, recursive.type, recursive.parent_id)\ .join(anchor, anchor.c.parent_id == recursive.id) recursive_part = anchor.union(recursive_part) recursive_part = db.session.query( postgresql.array_agg(func.ROW(recursive_part.c.id, recursive_part.c.title), type_=ArrayOfRecord))\ .select_from(recursive_part)\ .subquery() result = Location.query.with_entities(Location.id, recursive_part).all()

Ivan Butskiy
Ну вот как я формирую запрос: anchor = aliased(Lo...

Так, а откуда тот запрос? Ты уверен, что то, что формируется в алхимии, и то что ты скинул — это одно и тоже?

Pavel Павлик
Так, а откуда тот запрос? Ты уверен, что то, что ф...

Ну последняя переменная recursive_part прям точно формирует тот запрос, что я писал на SQL. Исключение только anchor.id == 418. Вместо 418 я использовал column('id'). Ведь если бы писал anchor.id == Location.id, то было во from было бы не from "location" as anchor, а from "location" as anchor, location. Но в идеале хотелось бы, чтобы этот CTE visual_path был добавлен как атрибут к location. Но в алхимии так нельзя, вроде бы. По-моему в Django ORM можно так делать, точно не помню

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

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

Ясн. Но я всеравно к кедам отношусь с опасением. Чисто субьективное кедосозерцание. Что касаемо "восторга изяшности кед" так и не вкурил, хотя много слышал, пока не поставил с...
Артем Записной
30
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Hello everyone, sorry for asking as I guess this has already been answered a thousand times but... I m a bit concerned about the FTM -> S swap. I m hodler and quiet exposed a...
Tonton ToOn
6
They keep hyping $FUN but where's the progress? 🙄
Noah Noure
23
А чем вам питонисты не угодили?😂
.
79
Btw guys very stupid question but i haven't researchd so js asking you pros . Can ltc be traced too? Literally point to pint to the user? And getting the banks blocked ? Exch...
20
Can I deposit from Bingx-exchange to wazirx? Any problem? Admin
Crypto Alt Trader
16
Hey guys, did you see the new announcement about $Fun? 🔥
Filip Murphy
55
Карта сайта