Как правильно отсортировать товары по возрастанию, когда есть артикулы с 0?
Добрый день. В интернет магазине товар сезонный. Вообще изначально мы отталкиваемся от бумажного каталога. Раньше сносили весь ассортимент с сайта, сейчас для SEO решили оставлять старый ассортимент и добавлять новый, при этом каждый год артикулы у нас начинаются с 1... теперь у товаров старого каталога мы артикулы просто выставляем в 0.
Теперь нам нужно отсортировать товары по артикулу от 1 до N при этом артикулы с 0 убрать в самый конец...
не совсем понял, как применить ваше решение в моём случае:
SELECT new_shop_production.id, sezon, new_shop_production.name, LPAD(new_shop_production.article, 4, "0") as article , new_shop_production.s_description, new_shop_production.price, new_shop_production.price2, ROUND(((new_shop_production.price2 - new_shop_production.price)/new_shop_production.price2)*100) as percent, stock, `shop_production_img`.`s_img`, coment_price, new_shop_production.switch as switch FROM new_shop_production
left join shop_production_img on shop_production_img.`id_production` = new_shop_production.id
where `new_shop_production`.catalog in(107)
group by new_shop_production.id order by new_shop_production.switch DESC, article
limit 0 , 12
Александр Фадеев, рад за вас) На самом деле можно (и даже скорее нужно, для понимания) создать дополнительный столбец в запросе и сортировать по нему, но для краткости я написал сразу в сортировку. Должно работать и так, и так)
Странно конечно, когда нельзя сортировать по общему полю (скажем дате создания); в вашем случае можно ввести дополнительное поле, по которому выполнять сортировку
пример запроса
select
id,
some_fields,
CASE WHEN id > 0 THEN -1 ELSE 0 END as rank
from product
order by rank asc, id asc
Сортировка в зависимости от разных условий осуществляется по нескольким полям. Базовая сортировка это по наличию и по артикулу... ещё иногда сортируем по наличию и размеру скидки, по наличию и цене, по наличию и названию. + Сейчас надо убрать все нулевые артикулы в низ...