insp = inspection.alias('insp') latest_restaurant_inspections = select( [restaurant, inspection.c.id, inspection.c.date, violation.c.code], and_( inspection.c.date==(select([func.max(insp.c.date)], insp.c.restaurant_id==restaurant.c.id)), violation.c.code=='c1' ), from_obj=[restaurant.join(inspection).join(inspection_violation).join(violation)], )