Я не совсем уверен, чего вы пытаетесь достичь, но GROUP BY
может и не понадобиться. Следующее всегда будет возвращать одну строку:
SELECT SUM(o.status = 'send') as countSend,
SUM(o.status = 'pending') as countPending
FROM orders o LEFT OUTER JOIN
order_posts op
ON op.order_id = o.id LEFT OUTER JOIN
posts p
ON p.id = op.post_id
WHERE (o.id LIKE '%Shop 3%') OR (p.title LIKE '%Shop 3%');
Если предложение WHERE
отфильтровывает все, вы все равно получите одну строку со значениями NULL
. Используйте COALESCE()
для возврата 0
вместо:
SELECT COALESCE(SUM(o.status = 'send'), 0) as countSend,
COALESCE(SUM(o.status = 'pending'), 0) as countPending