Сортировка средствами MySQL

DrJeans
На сайте с 06.07.2006
Offline
231
851

Есть таблица с товаром, для каждого товара формируется меню товарной группы такого вида

товар_999_руб | товар_998_руб << дешевле | товар | дороже>> товар_1001_руб | товар_1002_руб

слева, тот, что дешевле сортируется по выборке

'$f_Price' >= Price ORDER BY Price DESC LIMIT 2

и конечно же выдает последовательность 999,998 и т.д.

Вопрос: можно ли средствами MySQL получить этот порядок цифр в реверсе без PHP и манипуляций с массивами, чтобы получить в итоге так:

товар_998_руб | товар_999_руб << дешевле | товар | дороже>> товар_1001_руб | товар_1002_руб

Спроси на Boosty: https://boosty.to/smorovoz SEO на Ютубе: https://www.youtube.com/@youtube-seo/
K
На сайте с 21.01.2005
Offline
74
#1

Попробуй что-то вроде этого:

select * from (select * from test where 1000>= price ORDER BY price DESC LIMIT 2) a order by price
Крыленко и Ко (http://www.krylenko.com) | ePayments - удобный способ вывода платежей (https://www.epayments.com/registration?p=D5224FD731)
Dreammaker
На сайте с 20.04.2006
Offline
569
#2

Не до конца могу понять задачу, пока что банальное ASC лезет в голову.

update: нужно получить 998, 999, 1000, 1001, 1002 зная 1000?

dvaes
На сайте с 03.09.2007
Offline
65
#3
'$f_Price' >= Price ORDER BY Price ASC LIMIT 2

так реверс

DrJeans
На сайте с 06.07.2006
Offline
231
#4
dvaes:
так реверс

Так выдаст 1_руб, 2_руб. :)

Это реверс по всему масиву цен меньше заданного. Левый ряд навигации, всё, что дешевле, это отдельный запрос, а всё, что дороже - это другой запрос к базе. Всё, что дороже отрабатывает как надо, от меньшего к большему.

Shtogrin
На сайте с 02.11.2006
Offline
95
#5

ASC не подойдет, так как получим две минимальные цены, которые меньше текущей.

С вложенным запросом krylenkom вроде выглядит более логично.

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
DI
На сайте с 03.01.2007
Offline
123
#6

Так тоже будет работать:

(select * from test where 1000>= price ORDER BY price DESC LIMIT 2) order by price
Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
DrJeans
На сайте с 06.07.2006
Offline
231
#7

Спасибо, коллеги, сорри за задержку с ответом. Решение было применено в каталоге товара на НетКат, если вдруг кому понадобится вот код:

".listQuery("(SELECT Name,Price,Keyword FROM Message10 WHERE Checked='1' AND Message_ID != '$f_RowID' AND '$f_Price' >= Price ORDER BY Price DESC LIMIT 3) ORDER BY Price "," <a href='/path/\$data[Keyword].html'>\$data[Name]</a> |")."

Сортировка выборки в запросе средствами MySQL. Сначала делаем выборку всех товаров, которые дешевле текущей товарной позиции, затем оставляем только три последние позиции и сортируем их в обратном порядке.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий