@Genuas
Программист

Как сделать правильную сортировку по двум полям?

Есть запрос
SELECT
`oc_product`.`price` as `price`,
`oc_product`.`tax_class_id`,
`oc_product_to_category`.`category_id`,
`oc_product`.`image`,
`oc_product`.`product_id`,
`oc_product_description`.`name`,
`oc_product_special`.`price` as `specprice`
FROM  `oca_label_product` 
left join `oc_product_special` on `oca_label_product`.`product_id` = `oc_product_special`.`product_id` 
inner join `oc_product` on `oca_label_product`.`product_id` = `oc_product`.`product_id` 
inner join `oc_product_description` on `oca_label_product`.`product_id` = `oc_product_description`.`product_id`
inner join `oc_product_to_category` on `oca_label_product`.`product_id` = `oc_product_to_category`.`product_id`
where `label_id` = 89
ORDER BY
`price`, `specprice` DESC
LIMIT 1000

Первое поле - price, второе - цена со скидкой - specprice. Сортирует по одному полю.\
prntscr.com/f0pszw
Как сделать сортировку по двум полям?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
Сортирует по одному полю.

Нет, сортирует по обоим полям: сначала по price по возрастанию (вы не указали порядок, поэтому по дефолту подставился ASC), а если price совпадает, то уже по specprice по убыванию (у вас значения одинаковые в обоих полях, поэтому незаметно).
Видимо, должно быть так:
ORDER BY `price` DESC, `specprice` DESC

Если предложенное решение не даст нужный результат, на примере своего скриншота опишите, в каком порядке должны идти строки из него.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы