Не знаю, как создать это MySQL заявление в sqlalchemy - PullRequest
1 голос
/ 04 февраля 2020

У меня есть следующее MySQL утверждение, которое делает то, что я хочу:

SELECT scores.score, registrations.parade, AVG(scores.score) as result
FROM scores
JOIN registrations ON scores.registrationId=registrations.id
where registrations.parade=1
GROUP BY scores.registrationId
ORDER BY result DESC

в основном, с sqlalchemy, я думаю, я бы начал с:

db.session.query(Scores, func.avg(Scores.score).label('result'))

Это потому, что я не нужна информация из регистраций (она связана друг с другом в модели). Я присоединяюсь только к регистрациям в операторе MySQL, потому что мне нужно отфильтровать его parade.id

Ниже приведено то, что я пробовал до сих пор, но оно не работает:

scores = db.session.query(Scores,func.avg(Scores.score).label('result'))\
    .filter(Registrations.parade == 1)\
    .group_by(Scores.registrationId)\
    .order_by(desc('result'))

1 Ответ

0 голосов
/ 04 февраля 2020

Вам не хватает join

scores = db.session.query(Scores.score,func.avg(Scores.score).label('result'))\
    .join(Registrations)\
    .filter(Registrations.parade == 1)\
    .group_by(Scores.registrationId)\
    .order_by(desc('result'))

Другая проблема заключается в том, что у вас должна быть функция агрегации для registrations.parade, или вы можете включить ее в оператор group_by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...