postgresql 7.1 select p.product_id, p.product_name, p.dirname, r.recommendation_text, o.offer_code from ec_product_recommendations r, ec_products_displayable p left outer join ec_user_session_offer_codes o on (p.product_id = o.product_id and user_session_id = :user_session_id) where p.product_id=r.product_id and category_id is null and subcategory_id is null and subsubcategory_id is null and (r.user_class_id is null or r.user_class_id in (select user_class_id from ec_user_class_user_map where user_id = :user_id $user_class_approved_p_clause)) and r.active_p='t' select count(*) as product_count from ec_products_searchable p left outer join ec_user_session_offer_codes o on (p.product_id = o.product_id and user_session_id = :user_session_id) where not exists (select 1 from ec_category_product_map m where p.product_id = m.product_id) select p.product_id, p.product_name, p.one_line_description, o.offer_code from ec_products_searchable p left outer join ec_user_session_offer_codes o on (p.product_id = o.product_id and user_session_id = :user_session_id) where not exists (select 1 from ec_category_product_map m where p.product_id = m.product_id) order by p.product_name limit :how_many offset :start_row