EXPLAIN SELECT o2.master_ticket_id, th2.ticket_id, IF(get_ticket_count_by_order (o2.master_ticket_id) = 0, COUNT(DISTINCT th2.ticket_id), COUNT(DISTINCT IF( EXISTS( SELECT * FROM merchant_package_characs mpc WHERE mpc.merchant_id = th2.merchant_id AND mpc.package_id = th2.package_id AND mpc.name = 'package_type' AND mpc.value = 'Merchandise'), NULL, th2.ticket_id) ) ) AS package_tickets, IF( get_ticket_count_by_order (o2.master_ticket_id) = 0, COUNT(DISTINCT th2.ticket_id) , get_ticket_count_by_order (th2.master_ticket_id) ) AS order_tickets, o2.merchant_id AS merchant, m.name AS merchant_name, package_class, customer_type_name AS rate_type, package_desc FROM ticket_order_header o2 INNER JOIN ticket_header th2 ON o2.master_ticket_id = th2.master_ticket_id INNER JOIN package_header ON th2.package_id = package_header.package_id INNER JOIN customer_type ON th2.customer_type = customer_type.customer_type INNER JOIN merchant m ON o2.merchant_id = m.merchant_id WHERE (o2.merchant_id IN (6234) or m.parent_econsignment_merchant_id IN (0) ) AND order_date >= '2012-01-01' AND order_date < DATE_ADD('2012-10-31', INTERVAL 1 DAY) GROUP BY o2.master_ticket_id, th2.ticket_id