On Jan 27, 2011, at 8:06 PM, Eric N wrote:

> I'm trying to construct a query where in the from clause I would end
> up with something like
> SELECT foo
> FROM table1 JOIN
>           table2 ON table1.id1 = table2.id1 JOIN
>           table3 ON table1.id1=table3.id1 JOIN
>           table4 ON table2.id2=table4.id2 AND table3.id3=table4.id3
> 
> I have tried various join combinations but I can only get it to join
> table4 to table2 or table 3, not both.

the and_() function would be used as the onclause:

from sqlalchemy import and_

select = select.select_from(
        table1.join(table2, table2.c.id1==table1.c.id1).\
                join(table3, table1.c.id1==table3.c.id1).\
                join(table4, and_(table2.c.id2==table4.c.id2, 
table3.c.id3==table4.c.id3))
)

You didn't say if you were using ORM or expression language, that above is 
expression language.  Same idea applies to ORM, use and_() in the ON clause. 

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