Сортировка по наличию значений в полях и по ID одновременно - MySQL

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть база товаров, поля id , image, text. image и text - текстовые поля, id - числовое Нужно отсортировать товары так, чтобы вначале шли: товары с непустыми полями image и text, и все это отсортировано по id потом товары с непустым полем image и пустым полем text, тоже отсортировано по id потом только с текстом, так же по id потом остальные (т.е. пустые, без текста и без фото) Пробовал что-то вроде:
ORDER BY `tov_image DESC, `tov_text` DESC, `tov_id` ASC
Но сортирует неправильно, т.к. делает это по символам в этих строках, а надо чтобы впринципе по наличию символов в строке, и при этом по id ф прямом порядке. Как организовать такое наркоманство? )

Решение задачи: «Сортировка по наличию значений в полях и по ID одновременно»

textual
Листинг программы
ORDER BY IF(`tov_image`!='',1,0) DESC, IF(`tov_text`!='',1,0) DESC, `tov_id` ASC

Объяснение кода листинга программы

В данном коде происходит сортировка данных по наличию значений в полях и по ID одновременно. Список действий в коде:

  1. ORDER BY - команда для сортировки данных
  2. IF(tov_image!='',1,0) - условное выражение, которое проверяет наличие значения в поле tov_image
  3. IF(tov_text!='',1,0) - условное выражение, которое проверяет наличие значения в поле tov_text
  4. , - запятая для разделения условий
  5. `` - символ для обозначения начала и конца строки в SQL запросе
  6. tov_id - название поля, по которому происходит сортировка
  7. ASC - указание на то, что сортировка происходит по возрастанию Выглядит это так:
  8. Условие: IF(tov_image!='',1,0)
    • Проверка: tov_image не равно пустой строке
    • Значение: 1 (считается, что это значение больше 0)
    • Если условие выполняется: присваивается значение 1
  9. Условие: IF(tov_text!='',1,0)
    • Проверка: tov_text не равно пустой строке
    • Значение: 1 (считается, что это значение больше 0)
    • Если условие выполняется: присваивается значение 1
  10. Условие: ,
    • Запятая для разделения условий
  11. Условие: tov_id
    • Название поля, по которому происходит сортировка
  12. Условие: ASC
    • Указание на то, что сортировка происходит по возрастанию

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы