使用SQLAlchemy,我与两个表 - 用户和分数有一对多的关系。我正在尝试查询在过去的X天内按总分排序的前10名用户。SQLAlchemy过滤查询相关对象
users:
id
user_name
score
scores:
user
score_amount
created
我当前的查询是:
top_users = DBSession.query(User).options(eagerload('scores')).filter_by(User.scores.created > somedate).order_by(func.sum(User.scores).desc()).all()
我知道,这显然是不正确的,这只是我最好的猜测。但是,在查看文档和使用Google搜索后,我找不到答案。
编辑: 也许这将有助于如果我勾勒出MySQL查询会是什么样子:
SELECT user.*, SUM(scores.amount) as score_increase
FROM user LEFT JOIN scores ON scores.user_id = user.user_id
WITH scores.created_at > someday
ORDER BY score_increase DESC
误差在使用结合eagerload()用针对则其加入在此说明FAQ条目:http://www.sqlalchemy。org/trac/wiki/FAQ#ImusinglazyFalsetocreateaJOINOUTERJOINandSQLAlchemyisItrustctingtheWhenItemtoItemtoIndtoWAWEEORDERBYLIMITetc.whichresliesToOUTERJOIN – zzzeek 2010-01-06 19:58:29