Hi,

I'm trying to construct a query that have a subquery, and that subquery
references the outer query attribute. It's almost working actually:

Intended select:

select * from curso c join matricula m on c.id_curso = m.id_curso
                          where m.id_aluno = 1
                          and m.data = (select max(sub.data) from matricula
sub
                          where sub.id_aluno = m.id_aluno)

Query:

        alias = aliased(Matricula)
        subquery = session.query(func.max(alias.data)).filter(alias.id_curso
== Matricula.id_curso).subquery()
        lista = session.query(Curso) \
                       .join(Matricula) \
                       .filter(Matricula.id_aluno == 1) \
                       .filter(Matricula.data == subquery) \
                       .all()

Result select:

SELECT curso.id_curso AS curso_id_curso, curso.area AS curso_area,
curso.carga_horaria AS curso_carga_horaria, curso.ementa AS curso_ementa,
curso.nome AS curso_nome
    FROM curso JOIN matricula ON curso.id_curso = matricula.id_curso
    WHERE matricula.id_aluno = 1 AND matricula.data = (SELECT
max(matricula_1.data) AS max_1

        FROM matricula AS matricula_1, matricula

          WHERE matricula.id_curso = matricula_1.id_curso)

The only problem here is: the subselect is using two references to
"matricula" in the from clause:

FROM matricula AS matricula_1, matricula <<<<< this guy shouldn't exist.

I just want the "matricula" from the outer select.

Fixing that, and i'm done. But how can I do that?

Thanks in advance

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to