- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Возможно что Вы свежим взглядом сможете мне указать на мою ошибку.
У меня дата и время запланированного в будущем звонка оператора по заказу записывается в поле recall (timestamp) в таблице MySQL.
Задача вывести список заказов с обязательными условиями:
1. сначала в списке выводятся заказы у которых время запланированного звонка операторов - СЕГОДНЯ. Затем уже остальные заказы с сортировкой по полю id.
2. заказы у которых запланированное время звонка операторов сегодня, должны быть отсортированы, чтобы сначала выводились те, по которым время звонка наступит раньше.
Первое удалось реализовать, второе нет. Вот такой строчкой дополняю SQL-запрос:
ORDER BY DATE(`recall`) = CURDATE() DESC, `zakaz`.`id` DESC
В результате действительно выводятся сначала те заказы по которым время звонка оператора запланировано на сегодня. Затем все остальные с сортировкой по полю id.
Не получается модифицировать запрос, чтобы выполнялось условие номер 2.
Буду рад совету или примеру. Спасибо!
Не вступайте в противоестественную связь с головным мозгом читателей, а для начала просто прочитайте, хоть в букваре для ЦПШ по SQL, как хранится тип TIMESTAMP и делайте банальнейший ORDER BY по единственному полю.
Это я еще ничего не говорю о том, кто ставит TIMESTAMP вместо DATETIME... хотя там был бы точно такой же запрос, просто не тащится ненужный оверхед таймзоны в обработке
Да, две разных сортировки в одном запросе - just impossible. Хотя я не DBA, но я что-то не слышал о революциях в SQL в последнее десятилетие
Да, две разных сортировки в одном запросе - just impossible. Хотя я не DBA, но я что-то не слышал о революциях в SQL в последнее десятилетие
Спасибо за Ваш ответ. Тем не-менее две и более сортировки в одном запросе - работают.
https://stackoverflow.com/questions/2051162/sql-multiple-column-ordering
Можно сделать виртуальное поле, подзапросом в которое писать даты только сегодняшнего дня, и затем по нему сортировать. Но боюсь, скорость у такого метода будет не самая высокая. Возможно, проще и быстрее отсортировать уже полученные результаты вне базы. Попробуйте оба варианта
elitedesign, ох как все запущено. Ангельского совсем пан не розумиет?
Означает, что внутри сортировки column1 (при одном и том же значении поля) будет сортировка по column2. Это nested, а не sequential, что на доступном жертвам ЕГЭ уровне (картиночками) показывает ответ https://stackoverflow.com/a/21211388/960558 в этой же теме
Есть в mysql еще такая функция FIELD() - сходу не скажу, что подойдёт, но я бы поигрался