Подсчет строк MySQL

374
03 января 2018, 17:02

Есть запрос в базу данных для получения списка заказов.

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. Данные нужны для постраничной навигации(пагинатора). Вопрос как получить количество всех записей, которые подходят под данный фильтр?

Answer 1
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 - например

READ ALSO
Сохранение значения enum Unity

Сохранение значения enum Unity

Как можно реализовать сохранение значения enum в игре

247
Изменить X FORWARDED FOR или отключить его в dotnetbrowser

Изменить X FORWARDED FOR или отключить его в dotnetbrowser

Изменить X FORWARDED FOR в dotnetbrowser?Или изменить локальный IP в c# form

352
Как проверить у файла наличие защиты?

Как проверить у файла наличие защиты?

При скачивании файла с интернета он маркируется для защиты таким образом:

233
Ошибка в новом unity3d

Ошибка в новом unity3d

Приветствую! В старой версии unity эта ошибка игнорировалась, в новом не дает с ней запускать игру: Step Offset must be less or equal to <scaled Height> + <scaled Radius>...

336