nwnet Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Spoiler case 'price':$order = 'pv.price IS NULL, pv.price=0, pv.price';break;Сейчас сортировка идет по значению из первого варианта в товаре. А если их несколько и цены разные, то например данные из второго и третьего варианта не учитываются.А это неправильно, т.к. вводит посетителей в заблуждение. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 А как можно сделать по-другому? В сортировке можно учитывать только ОДНУ цену, никак не три)) Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 Ну например учитывать большую или меньшую Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Так ставте ПЕРВОЙ ту, которая нужна, потому что одному нужна большая, другому меньшая, третьему - еще какая-то... Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 По логике вещей обычно сортировкой пользуются, чтобы найти более дешевые товары. Таким образом что-то нужно дописать, чтобы перебиралимь все значения из вариантов и выбиралось, соответствующее нашему условию? А дальше уже каждый может решать что должно учитываться большая цена или меньшая исходя из специфики покупателей. Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 Kosjak76, если товара 3 или 10, то да, а если товаров уже перенесено 1000 ? Тоже ручками? Это не технологично. Цитата Ссылка на сообщение Поделиться на другие сайты
Wizard Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 nwnet, создавайте каждый товар отдельно - будет все корректно. других вариантов нет Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 Wizard, если товары уже забиты, то это не выход. Цитата Ссылка на сообщение Поделиться на другие сайты
Wizard Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 другого варианта нет, выход - перезабить товары, или написать маленький код, который расклеит варианты и сделает отдельными товарами Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 Понятненько( Спасибо за ответы! Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Что это за система, когда другого варианта нет?У меня тоже проблема: я товары импортировал, у них в БД id не по порядку, все разные, цены понятные, но вот сортировку по цене делает через одно место. По имени сортирует, а если по цене, то идёт сначала товар за 112 рублей, следом товар за 4539 рублей, следом - за 459 рублей. Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 может, что-то нужно переиндексировать? Цитата Ссылка на сообщение Поделиться на другие сайты
MacKorOSX Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 А может для sql можно какой скрипт сообразить который в каждом товара пересортирует варианты от меньшего по цене к большему? Цитата Ссылка на сообщение Поделиться на другие сайты
Wizard Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 для вариантов вместо ORDER BY position поставьте ORDER BY price, правда в админке не будет актуальна функция позиционирования варианта, но она вам и не нежна по всей видимости, и все будет работать так как вы хотите. Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 2 Novecheg - у тебя почему-то сортирует цифры по алфавиту, а не по величине. Нужно: ORDER BY value=0, -value DESC, value Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 Подскажите, как сделать так, чтобы при сортировке по цене не выводились товары, которых нет в наличии? Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Попробуй так:case 'price': $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)'; break; Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Нет, у меня идёт сортировка "по цене" вообще никак. Через одно место. Алгоритм, по которому сортируется, мне ещё непонятен.И в каком файле искать это case 'price': Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Нет, у меня идёт сортировка "по цене" вообще никак. Через одно место. Алгоритм, по которому сортируется, мне ещё непонятен.И в каком файле искать это case 'price': Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 Тебе нужно ORDER BY value=0, -value DESC, value Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 я же писал у тебя идет сортировка по алфавиту, а не по величине Цитата Ссылка на сообщение Поделиться на другие сайты
nwnet Опубликовано 13 июля, 2012 Автор Жалоба Поделиться Опубликовано 13 июля, 2012 посмотри, что у тебя в api/products.php Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 Я же ответил, что не по алфавиту, а вообще никак. И в каком это файле? Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 У меня вот так.Что изменить?case 'price': //$order = 'pv.price IS NULL, pv.price=0, pv.price'; $order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1)'; break; Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 13 июля, 2012 Жалоба Поделиться Опубликовано 13 июля, 2012 никакого order by Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.