使用Flask-sqlalchemy,如何使用order_by对需要加入的某些avarage数据进行数据排序?

时间:2018-01-09 10:38:09

标签: python sqlalchemy

我使用flask-sqlalchemy将Mysql控制为ORM。 这是我简单的数据库图 simple graph about database

问题是我应该创建一个用户列表。将根据评论的平均星级对每个用户进行排序,这些评论可以在多个级别深度中找到并计算

所以我做了一些代码:

UserModel.query\
    .group_by(UserModel.id) \
    .join(UserServiceModel,UserModel.id == UserServiceModel.user_id) \
    .join(BookModel,UserServiceModel.id == BookModel.user_service_id) \
    .join(ReviewModel,BookModel.id == ReviewModel.book_id) \
    .with_entities(func.avg(ReviewModel.star)) \
    .all()

似乎问题几乎已经解决了,但是在我使用JOIN之后,那些没有书籍或评论的用户不在列表中。

问题是,我如何通过avarage明星对所有用户进行排序,即使他们中的大多数都没有评论记录,我需要列表中的所有用户,无论avarage是0还是None。

否则,还有其他好主意吗?

0 个答案:

没有答案