Проблема n+1 в сложных запросах

У меня есть сложный запрос, предположим такой:

a = aliased(Advance)
    w = aliased(Worker)
    latest_advances_cte = (
        select(
            a.to_worker_id,
            func.max(a.created_at).label("latest_created_at")
        )
        .filter_by(from_manager_profile_id=telegram_user_id)
        .group_by(a.to_worker_id)
        .cte("latest_advances")
    )

    la = aliased(latest_advances_cte)
    detailed_latest_advances_cte = (
        select(a)
        .join(la, and_(
            a.to_worker_id == la.c.to_worker_id,
            a.created_at == la.c.latest_created_at
        ))
        .cte("detailed_latest_advance")
    )

    dla = aliased(detailed_latest_advance_cte)
    query = (
        select(w, dla)
        .join(dla, w.id == dla.c.to_worker_id)
    )

как мне на выходе получить результат, который я получаю при использовании загрузки связанных объектов? То есть строка с воркером и списком его авансов, а не множество строк одинаковых воркеров и разных авансов для него. Заранее благодарю за помощь!


Ответы (0 шт):