Построение SQL-запроса Zend Framework (ORDER BY)
-
19-09-2019 - |
Вопрос
У меня есть база данных со столбцом VARCHAR. url
.Я хотел бы получить строки, чтобы те, которые имеют какие-либо url
значения имеют приоритет над другими строками, но упорядочены по date
ряд (по убыванию), поэтому ORDER BY 'url' DESC, 'date' DESC
не будет работать, поскольку сначала они будут упорядочены в алфавитном порядке.В принципе, это будет выглядеть примерно так:
Стол:
ID | Url | Date
1 | http://...| 1001
2 | | 1002
3 | | 1003
4 | http://...| 1005
5 | http://...| 1004
Сортировано:
ID | Url | Date
4 | http://...| 1005
5 | http://...| 1004
1 | http://...| 1001
3 | | 1003
2 | | 1002
Каков был бы правильный способ Zend Framework (или, по крайней мере, SQL-запрос) для этого?
Решение
С помощью SQL вы могли бы что-то вроде...
Это становится некрасиво, если вы также разрешаете нулевые значения в поле URL.
SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl
FROM url ORDER BY nourl ASC
По сути, это проверяет, больше ли длина URL-адреса или равна нулю.Если да, то они находятся в самом низу сортировки.
Другие советы
Вы могли бы использовать order by field('field_name', value) desc
в операторе выбора.