It looks to be the generated SQL is correct. It is possible you enabled record versioning and that added the common_filter is_active==True. Yet perhaps you have records with is_active=None and therefore they showed up before and not now.
On Friday, 21 December 2012 10:50:13 UTC-6, Cliff Kachinske wrote: > > Salient details from two tables: > > db.define_table( > 'suppliers', > Field('name', length=256, required=True, notnull=True), > .... > > > db.define_table( > 'supplier_contacts', > Field('supplier_id', db.suppliers), > Field('first_name', length=32, required=True, notnull=True), > > > > The code below worked in 1.99.7. If the supplier had two contacts, it > would return two rows as expected, both with the same supplier data but > each with individual contact data. > > In 2.2.1 it returns no rows. > > def get_approved_suppliers(product_id): > > return db( > (db.product_suppliers.product_id==product_id) & > (db.product_suppliers.supplier_id==db.suppliers.id) > ).select( > db.suppliers.id, > db.suppliers.name, > # more supplier details omitted for brevity, > db.supplier_contacts.id, > db.supplier_contacts.first_name, > # contact details omitted for brevity. > left = db.supplier_contacts.on( > db.supplier_contacts.supplier_id==db.suppliers.id > ) > ) > > > This is the query as shown by db._lastsql. (Broken into chunks for > readability) > > SELECT suppliers.id, suppliers.name, suppliers.address, suppliers. > address_2, suppliers.city, suppliers.state, suppliers.zip, suppliers. > land_line, suppliers.fax, suppliers.email, suppliers.website,supplier_contacts > .id, supplier_contacts.first_name, > supplier_contacts.middle_name,supplier_contacts > .last_name, supplier_contacts.generation, > supplier_contacts.email,supplier_contacts > .mobile, supplier_contacts.land_line, supplier_contacts.fax > > FROM product_suppliers, suppliers > > LEFT JOIN supplier_contacts ON (supplier_contacts.supplier_id = suppliers. > id) > > WHERE (((((product_suppliers.product_id = 340) AND > (product_suppliers.supplier_id > = suppliers.id)) AND (product_suppliers.is_active = 'T')) AND > (suppliers.is_active > = 'T')) AND (supplier_contacts.is_active = 'T')); > > > > > --