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