Есть запрос в базу данных для получения списка заказов.
SELECT
`orders`.*,
SUM(`pto`.`amount` * `pto`.`price`) + `orders`.`delivery_cost` - `orders`.`discount` as `full_sum`
FROM
`orders`
LEFT JOIN `product_to_order` AS `pto` ON(`pto`.`order_id` = `orders`.`id`)
WHERE
`orders`.`type` = 'sending'
GROUP BY
`orders`.`id`
HAVING `full_sum` LIKE '%140%'
ORDER BY `orders`.`id` DESC
LIMIT 0, 25
orders.delivery_cost - Цена доставки
orders.discount - Скидка
pto.price - Цена товара
pto.amount - Количество товара
Раньше не приходилось фильтровать заказы по сумме, а теперь нужна такая опция и я прибег к использованию HAVING.
Данные нужны для постраничной навигации(пагинатора).
Вопрос как получить количество всех записей, которые подходят под данный фильтр?
select count(*) as ocnt from (SELECT orders.id as oid,
SUM(pto.amount * pto.price) + orders.delivery_cost -
orders.discount as full_sum
FROM orders
LEFT JOIN product_to_order AS pto ON(pto.order_id = orders.id)
WHERE orders.type = 'sending'
GROUP BY oid
HAVING full_sum LIKE '%140%') as tab1
АЛСО, я конечно не знаю как там что у вас, но LIKE предполагается использовать со строковыми данными - для всех типов чисел гораздо удобнее (и главное - быстрее) установить обычные диапазоны с использованием <,<=,>,>=,=, IN : HAVING full_sum > 100.0 AND full_sum <= 160.0 - например
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости