Похожие чаты

Привет! Хочу запрашивать индивидуально колонки у Player. У Player с Team

many-to-many связь. Хочу, чтобы в Player лежали все его команды. Код ниже почти привёл к результату, но он выдаёт несколько игроков с одинаковым id и разными командами.

Можно как–то средствами Алхимии собрать команды одного игрока в массив, чтобы строки с одинаковым id игрока не множились?

query = select(
Player.id,
Team
) \
.join(Player.teams) \
.where(Player.id == player_id)

16 ответов

14 просмотров

зачем тебе инживидуальные колонки?

dmitry-bleschunov Автор вопроса
Tishka17
зачем тебе инживидуальные колонки?

Для вопроса я упростил, но вообще там сложные колонки с конкатенацией и всем таким

dmitry-bleschunov Автор вопроса

Помогите пожалуйста

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

dmitry-bleschunov Автор вопроса

Одинаковый айди, потому что раздваиваются строки. Потому что к одному игроку много команд джоинится. Вопрос в том, как собрать эти команды в массив и присвоить игроку, чтобы была одна строка с игроком, и у него поле teams: list[Team]

dmitry-bleschunov Автор вопроса
Eugene
а, ну, one-to-many в доке

только это many-to-many

dmitry bleschunov
Одинаковый айди, потому что раздваиваются строки. ...

я запутался) ты говоришь "присвоить игроку, чтобы была одна строка с игроком, и у него поле teams: list[Team]"

dmitry-bleschunov Автор вопроса
Eugene
я запутался) ты говоришь "присвоить игроку, чтобы...

Код, который я прислал даёт такой результат player_id: 10, team: {team_id: 10} player_id: 10, team: {team_id: 20} а я хочу чтобы было так player_id: 10, teams: [{team_id: 10}, {team_id: 20}]

dmitry bleschunov
Код, который я прислал даёт такой результат playe...

либо кастомным методом для экземляра класса + group_by

dmitry-bleschunov Автор вопроса
Glukhov Sergey
func.array_agg()

query = select( Player.id, func.array_agg(Team) ) \ .join(Player.teams) \ .where(Player.id == player_id) SQL expression element expected, got Team

dmitry bleschunov
query = select( Player.id, func.ar...

Вот пример https://stackoverflow.com/questions/23261944/sqlalchemy-postgresql-and-array-agg-how-to-select-items-from-array-agg

dmitry-bleschunov Автор вопроса
Glukhov Sergey
Вот пример https://stackoverflow.com/questions/2...

Уже открыт этот пример, спасибо

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Карта сайта