Добрый день! прошу подсказать/помочь! Суть дела в том - есть каталог товаров! и фильтр по ним! выберем сортировку по с низ по макс цене! сортирует все нормально,разбивает(допустим по 50 товаров!) НО есть товары с ценой 0.00! далее придумал скрипт, он проверяет по 0.00 вырезает удаляет и вставляет в конец массива (все отлично делает)! НО он сделал сортировку! по первой порции массива(50 товаров и кинул 0 в конец),переходим типо на 2 стр. следующих товаров 50(следующия порция массива!) и тд! и на последний страницы выводиться все правильно! НО НАДО ЧТО БЫ 0.00 БЫЛИ НЕ ВКОНЦЕ 1 порции а в последний!!!!! (возможно коряво пытаюсь объяснить но все работает типо отлично и самое главное(правильно со стороны программы!)) подумав пришел к выводу что мучать голову не надо! и нужно просто подправить запрос! тоесть нужно выбрать все товары отсортировать по возрастанию, а товары с 0 кидать в конец выборки! жду коменты! если что уточню
никаких юнионов не надо. зачем два запроса делать? налету агрегируем поле с 1 для всех ненулевых цен и 0 для всех нулевых сортируем по этому полю и потом по цене
Нет не подходить а как сортировать???? у меня то одна сортировка! колега подсказывает что можно типо (каойто условие фунция каторая по найденому НУЛ кидает его в конец , ну типо заменить с нул на 0, он просто ОРАКЛОИД и у него такое подобное есть!)
а вы по словесному описанию не понимаете логики? Код (Text): SELECT `id`, `price` FROM `table` ORDER BY CASE WHEN `price` = 0.00 THEN 0 ELSE 1 END DESC, `price` ASC по возрастанию цен. нулевые при этом в самой жопе списка. Добавлено спустя 1 минуту 37 секунд: то ж самое только price = 0.00 меняем на price IS NULL и все еще корректно сортируется - сначала по возрастанию ненулевые, НУЛлы в жопе списка.
в контексте "нулевую цену запихнуть в конец а список по цене сортировать" ваша запись получается лишь только короче. по скорости с IF-ом сравнимо. но IF-ами же можно и более сложную логику сортировки реализовать, чего не сделаешь простым перечислением order-by-ев. стало быть "жертвы IF-ов" счастливы быть таковыми...
Ну да "можно написать очень сложную логику, по-этому, даже простую будем писать километрами кода... на всякий случай". Зато не промолчал, чо
ТС, не забудьте дописать "показанные цены не являются публичной офертой, по этим ценам ничего нельзя купить у нас, звоните менегеру". Ну то есть попробовали бы вы нарисовать 0.0 на ибее например... хоть и в конце сортировки.