SQLAlchemy: 0.5.2 SQLite: 3.5.9 MySQL: 5.0.67-0ubuntu6 To short. The problem is 'The result come differently from session's query and plain sql which built by session's query.'
Well... It is too difficult to explain the situation so just have a look my code first please. subquery = query.subquery() minroom = meta.Session.query(subquery.c.property_id, func.min (subquery.c.house_rent).label('minprice')) minroom = minroom.group_by(subquery.c.property_id) minroom = minroom.subquery() query = meta.Session.query(model.Room).join((minroom, (model.Room.property_id==minroom.c.property_id) & (model.Room.house_rent == minroom.c.minprice))) query = query.group_by(model.Room.property_id) # This line break everything. raise str(len(query.all())) >> 1 - So stupid. Should be '10'. However. The result should be '10' because ... subquery = query.subquery() minroom = meta.Session.query(subquery.c.property_id, func.min (subquery.c.house_rent).label('minprice')) minroom = minroom.group_by(subquery.c.property_id) minroom = minroom.subquery() query = meta.Session.query(model.Room).join((minroom, (model.Room.property_id==minroom.c.property_id) & (model.Room.house_rent == minroom.c.minprice))) query = query.group_by(model.Room.property_id) # This line break everything. # raise str(len(query.all())) sql = str(query) query = meta.Session.query(model.Room).from_statement(sql) raise str(len(query.all())) >> 10 - This is correct. Or execute <sql> (written bottom of this post, built by session's query) on Terminal with sqlite3/MySQL return '10' as well (when I count the rows). I'm using SQLAlchemy on Pylons 0.9.7 and the module named 'paginator' doesn't allow to pass the data type of 'SQLAlchemy 0.5.2 's select object (SQL Expression Table Data). That's why (and else) I need to use ORM. (And I don't know that even SQL Expression could return correct value or not.) Does anyone have idea? Or is it just bug and i have to wait to be fixed this? By the way. I'm using 'declarative_base()' to build my ORM. Thanks. and sorry for my horrible english :-( <sql> SELECT rooms.id AS rooms_id, rooms.name AS rooms_name, rooms.space_utilized AS rooms_space_utilized, rooms.floor AS rooms_floor, rooms.direction AS rooms_direction, rooms.reference_url AS rooms_reference_url, rooms.remarks AS rooms_remarks, rooms.private_remarks AS rooms_private_remarks, rooms.is_recommand AS rooms_is_recommand, rooms.advertisement AS rooms_advertisement, rooms.has_parking_space AS rooms_has_parking_space, rooms.immediately_moveable AS rooms_immediately_moveable, rooms.arrangement AS rooms_arrangement, rooms.arrangement_detail AS rooms_arrangement_detail, rooms.house_rent AS rooms_house_rent, rooms.security_deposit AS rooms_security_deposit, rooms.key_money AS rooms_key_money, rooms.right_money AS rooms_right_money, rooms.management_fee AS rooms_management_fee, rooms.communal_charge AS rooms_communal_charge, rooms.parking_charge AS rooms_parking_charge, rooms.property_id AS rooms_property_id, rooms.company_id AS rooms_company_id, rooms.created AS rooms_created, rooms.modified AS rooms_modified FROM rooms JOIN (SELECT anon_2.property_id AS property_id, min (anon_2.house_rent) AS minprice FROM (SELECT rooms.id AS id, rooms.name AS name, rooms.space_utilized AS space_utilized, rooms.floor AS floor, rooms.direction AS direction, rooms.reference_url AS reference_url, rooms.remarks AS remarks, rooms.private_remarks AS private_remarks, rooms.is_recommand AS is_recommand, rooms.advertisement AS advertisement, rooms.has_parking_space AS has_parking_space, rooms.immediately_moveable AS immediately_moveable, rooms.arrangement AS arrangement, rooms.arrangement_detail AS arrangement_detail, rooms.house_rent AS house_rent, rooms.security_deposit AS security_deposit, rooms.key_money AS key_money, rooms.right_money AS right_money, rooms.management_fee AS management_fee, rooms.communal_charge AS communal_charge, rooms.parking_charge AS parking_charge, rooms.property_id AS property_id, rooms.company_id AS company_id, rooms.created AS created, rooms.modified AS modified FROM rooms) AS anon_2 GROUP BY anon_2.property_id) AS anon_1 ON rooms.property_id = anon_1.property_id AND rooms.house_rent = anon_1.minprice GROUP BY rooms.property_id --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---