Sql / join Сортировка идет "волнами"
Имеются 3 таблицы - products - products_and_promotions - stores_remains
Нужно отсортировать по полю stores_remains.total_remains
Проблема в том, что в результате запроса сортировка происходит "волнами" т.е. большая часть товаров отсортировалась от 9999 до 0 и дальше снова идет группа товаров с не 0 данными в поле сортировки.
Сам запрос:
select distinct SQL_CALC_FOUND_ROWS products.id, stores_remains.total_remains
as remains_sum
from `products`
inner join `products_and_promotions`
on `products_and_promotions`.`product_id` = `products`.`id`
left join `stores_remains`
on `stores_remains`.`parent_id` = IFNULL(products.parent_id, products.id)
and `stores_remains`.`color_id` = `products`.`color_id`
where `products_and_promotions`.`promotion_id` = 323
and `deleted` != 1
group by `products`.`id`
order by `remains_sum`
desc limit 30 offset 390;
Проблема наблюдается в выводе на сайте (поле stores_remains.total_remains). Но если сам запрос проверить в редакторе, то в поле в remains_sum значения будут не те, что изначально в таблице стояли. Т.е. если смотреть таблицу, поле stores_remains.total_remains - будет иметь значения 9999, 234, 444 и т.д. В результатах запроса же там только 1, 0 и null .
Я подозреваю, что проблема - сортировка "волнами" - именно в этом последнем нюансе.
Подскажите пожалуйста почему происходит эта "подмена" данных в поле и есть ли проблема в запросе или нужно искать причину в самих данных?