Задать вопрос

Как правильно воспользоваться ORDER BY?

Здравствуйте!
Есть две таблицы:
34c5531e50944a17b572f74aa3dd12c0.png8c0700d120a44ff3b82e608b4158581a.png

При выборке из них необходимо чтобы сортировало по статусу(status), по дате изменения(o.date_modified) и по тому, что дополнительно выберет пользователь(например по customer).

Воспользовался следующим запросом:
SELECT o.order_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, (SELECT os.name FROM oc_order_status os WHERE os.order_status_id = o.order_status_id AND os.language_id = '1') AS status, o.total, o.currency_code, o.currency_value, o.date_added, o.date_modified FROM `oc_order` o WHERE o.order_status_id > '0' ORDER BY status ASC, o.date_modified ASC, customer ASC

В итоге я получаю отсортированное по статусу и дате а по customer нет
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
ORDER BY status ASC, o.date_modified ASC, customer ASC - такая запись фильтрует по статусу, если будут одинаковые статусы, то для них будет осортировано по дате, и если и даты будут одинаковые, то для них будут отсортированы по customer. Сортируйте сначала по customer, потом по date_modified
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
BuriK666
@BuriK666
Компьютерный псих
o.date_modified - в секундах, он будет сортировать по customer, только если есть несколько записей с одинаковым date_modified
Ответ написан
Комментировать
romy4
@romy4
Exception handler
используйте DATE(o.date_modified) чтобы иметь сортировку по дням (это исключит часы и минуты)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы