2017-01-04 3 views
0
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() 

Как мы можем сделать группу concat и заказать их?SqlAlchemy Group Concat and OrderBy

я пробовал:

func.group_concat(movies_showing.movie_showtime).asc() 

и:

func.group_concat(movies_showing.movie_showtime.asc()) 

и оба, кажется, не работает. как мы это достигаем?

+1

попробовать "func.group_concat (movies_showing.movie_showtime.distinct())" – SumanKalyan

+0

@SumanKalyan im не ищет уникальных значений. Im ищет, чтобы агрегировать значения, но суммировать их в порядке возрастания или убывания. –

+0

Было ли решение для этого найдено? Можно ли использовать любые или все эти функции в ORM sqlalchemy? https://dev.mysql.com/doc/refman/5.7/ru/group-by-functions.html#function_group-concat –

ответ

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()