movies_on_date = session.query(movies_showing,
movies,
func.group_concat(movies_showing.movie_showtime)\
.label("showtimes"))\
.filter(movies_showing.date == movie_date,
movies.movie_title == movies_showing.movie_title) \
.group_by(movies_showing.movie_title)\
.all()
我们如何进行小组连接并订购它们?
我试过了:
func.group_concat(movies_showing.movie_showtime).asc()
和
func.group_concat(movies_showing.movie_showtime.asc())
两者似乎都不起作用。我们如何实现这一目标?
答案 0 :(得分:1)
我假设你的group_concat
已经在工作,你只想为查询添加排序。如果是这种情况,我认为您使用您创建的"showtimes"
标签作为排序参数,如下所示:
https://stackoverflow.com/a/15557759/1216837
所以我认为查询可以像这样稍加修改:
from sqlalchemy import desc
...
.group_by(movies_showing.movie_title)\
.order_by(desc('showtimes')).all()
.all()
答案 1 :(得分:0)
.op
是您的朋友,http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.operators.Operators.op
func.group_concat(movies_showing.op('ORDER BY')(movies_showing.movie_showtime.asc())
我认为这是sqlalchemy
代码中的一个错误,因为他们会忽略这些错误" ORDER BY movie_showtime"在他们生成的SQL中,但这是如何解决它。