Привет, я работаю над небольшой игрой с предсказаниями в flask с flask-sqlalchemy. У меня есть модель пользователя:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
nick = db.Column(db.String(255), unique=True)
bets = relationship('Bet', backref=backref("user"))
и моя модель Бет
class Bet(db.Model):
id = db.Column(db.Integer, primary_key=True)
uid = db.Column(db.Integer, db.ForeignKey('user.id'))
matchid = db.Column(db.Integer, db.ForeignKey('match.id'))
points = db.Column(db.Integer)
Оба не являются полными классами, но это должно быть сделано для вопроса. Пользователь может набирать очки за предсказание исхода матча и получать различное количество очков за предсказание точного исхода, победителя или разницы. Теперь я хочу иметь список лучших пользователей, где я должен суммировать баллы, которые я делаю через
toplist = db.session.query(User.nick, func.sum(Bet.points)).\
join(User.bets).group_by(Bet.uid).order_by(func.sum(Bet.points).desc()).all()
Это работает довольно хорошо, теперь может случиться так, что у двух игроков будет одинаковая сумма очков. В этом случае количество правильных прогнозов (вознаграждаемых 3 баллами) будет определять победителя. Я могу получить этот список по
tophits = db.session.query(User.nick, func.count(Bet.points)).\
join(User.bets).filter_by(points=3).all()
Они оба работают хорошо, но я думаю, что должен быть способ собрать оба запроса вместе и получить таблицу с именем пользователя, очками и «количеством обращений». Я делал это раньше в SQL, но я не так хорошо знаком с SQLAlchemy, и у меня в голове путаются мысли. Как я могу получить оба запроса в одном?