我使用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。
否则,还有其他好主意吗?