Сортировка по наличию значений в полях и по ID одновременно - MySQL
Формулировка задачи:
Здравствуйте!
Есть база товаров, поля id , image, text.
image и text - текстовые поля, id - числовое
Нужно отсортировать товары так, чтобы вначале шли:
товары с непустыми полями image и text, и все это отсортировано по id
потом
товары с непустым полем image и пустым полем text, тоже отсортировано по id
потом
только с текстом, так же по id
потом
остальные (т.е. пустые, без текста и без фото)
Пробовал что-то вроде:
Но сортирует неправильно, т.к. делает это по символам в этих строках, а надо чтобы впринципе по наличию символов в строке, и при этом по id ф прямом порядке.
Как организовать такое наркоманство? )
ORDER BY `tov_image DESC, `tov_text` DESC, `tov_id` ASC
Решение задачи: «Сортировка по наличию значений в полях и по ID одновременно»
textual
Листинг программы
ORDER BY IF(`tov_image`!='',1,0) DESC, IF(`tov_text`!='',1,0) DESC, `tov_id` ASC
Объяснение кода листинга программы
В данном коде происходит сортировка данных по наличию значений в полях и по ID одновременно. Список действий в коде:
ORDER BY
- команда для сортировки данныхIF(
tov_image!='',1,0)
- условное выражение, которое проверяет наличие значения в полеtov_image
IF(
tov_text!='',1,0)
- условное выражение, которое проверяет наличие значения в полеtov_text
,
- запятая для разделения условий- `` - символ для обозначения начала и конца строки в SQL запросе
tov_id
- название поля, по которому происходит сортировкаASC
- указание на то, что сортировка происходит по возрастанию Выглядит это так:- Условие:
IF(
tov_image!='',1,0)
- Проверка:
tov_image
не равно пустой строке - Значение: 1 (считается, что это значение больше 0)
- Если условие выполняется: присваивается значение 1
- Проверка:
- Условие:
IF(
tov_text!='',1,0)
- Проверка:
tov_text
не равно пустой строке - Значение: 1 (считается, что это значение больше 0)
- Если условие выполняется: присваивается значение 1
- Проверка:
- Условие:
,
- Запятая для разделения условий
- Условие:
tov_id
- Название поля, по которому происходит сортировка
- Условие:
ASC
- Указание на то, что сортировка происходит по возрастанию
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д