Ограничение объединенной таблицы до 4 строк и возврат результатов в json с postgresql и sqlalchemy - PullRequest
0 голосов
/ 11 июля 2020

До сих пор мне не удалось преодолеть error aggregate function calls cannot contain window function calls и я не нашел способа ограничить объединенную таблицу, которая не вызывала бы эту ошибку.

Я пробовал func.count(Video.id).label('rn') вместо func.row_number().over(partition_by=role.c.movie_id).label('rn'), что дает мне ошибку: aggregate function calls cannot be nested и перемещение таблицы Actor в свой собственный подзапрос, который дает мне ошибку AttributeError: 'Alias' object has no attribute 'type'

sub_query = db.session.query(
    func.json_build_object(
        'movie_name', Movie.movie_name,
        'movie_year', Movie.year,
        'movie_description', Movie.description,
        'Actors', func.array_agg(
            func.json_build_object(
                'actors_name', Actor.name,
                'actors_age', Actor.age,
                'rn', func.row_number().over(partition_by=role.c.movie_id).label('rn')
            )
        )
    )
).group_by(Movie.movie_name, Movie.year, Movie.description, role.c.movie_id)\
.join(role, (role.c.movie_id == Movie.id)).join(Actor, (role.c.actor_id == Actor.id)).subquery()
query = db.session.query(sub_query).filter(text('rn <= 4'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...