try label the column in q2, say q2.maxgrade, then use that as 

print s.query(A).filter( A.grade==q2.maxgrade)...


On Tuesday 12 May 2009 10:17:11 Max Ischenko wrote:
> I'm trying to express the following SQL:
>
> SELECT  * FROM attendances a WHERE grade = (SELECT MAX(grade) FROM
> attendances WHERE student_id=a.student_id) and school_id=112;
>
> >>> A2 = aliased(A) # A is Attendance class
> >>> q2 =
> >>> s.query(max_grade).filter(A.student_id==A2.student_id).subquery
> >>>() print q2 # looks OK so far
>
> SELECT max(attendances.grade) AS max_1
> FROM attendances, attendances AS attendances_1
> WHERE attendances.student_id = attendances_1.student_id
>
> >>> print s.query(A).filter(and_(A.grade==q2, A.school_id==112))
>
> SELECT attendances.id AS attendances_id, attendances.student_id AS
> attendances_student_id, attendances.school_id AS
> attendances_school_id, attendances.school_year_id AS
> attendances_school_year_id, attendances.grade AS attendances_grade
> FROM attendances, (SELECT max(attendances.grade) AS max_1
> FROM attendances, attendances AS attendances_1
> WHERE attendances.student_id = attendances_1.student_id) AS anon_1
> WHERE attendances.grade = SELECT max(attendances.grade) AS max_1
> FROM attendances, attendances AS attendances_1
> WHERE attendances.student_id = attendances_1.student_id AND
> attendances.school_id = %(school_id_1)s
> # doesn't work:
> LINE 8: WHERE attendances.grade = SELECT max(attendances.grade) AS
> m...
>
> If I do not use .subquery() it doesn't do correct thing either:
> >>> q3 = s.query(max_grade).filter(A.student_id==A2.student_id)
> >>> print s.query(A).filter(and_(A.grade==q3, A.school_id==112))
>
> SELECT attendances.id AS attendances_id, attendances.student_id AS
> attendances_student_id, attendances.school_id AS
> attendances_school_id, attendances.school_year_id AS
> attendances_school_year_id, attendances.grade AS attendances_grade
> FROM attendances
> WHERE attendances.grade = %(grade_1)s AND attendances.school_id = %
> (school_id_1)s
>
> Pls help,
> Max.
> 


--~--~---------~--~----~------------~-------~--~----~
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