Zend Framework SQL SELECT consulta de construção (ORDER BY)
-
19-09-2019 - |
Pergunta
Eu tenho um banco de dados com VARCHAR url
coluna. Gostaria de buscar linhas de modo que os que têm qualquer valor url
têm prioridade sobre outras linhas, mas são ordenados por linha date
(descendente), de modo ORDER BY 'url' DESC, 'date' DESC
não iria funcionar como seria encomendá-los em ordem alfabética pela primeira vez. Basicamente, seria algo parecido com isto:
Tabela:
ID | Url | Date
1 | http://...| 1001
2 | | 1002
3 | | 1003
4 | http://...| 1005
5 | http://...| 1004
Ordenado:
ID | Url | Date
4 | http://...| 1005
5 | http://...| 1004
1 | http://...| 1001
3 | | 1003
2 | | 1002
O que seria o caminho Zend Framework adequada (ou pelo menos consulta SQL) para fazê-lo?
Solução
Com o SQL, você poderia então algo como ...
Ele fica tipo de feio, se você permitir valores nulos no campo url também.
SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl
FROM url ORDER BY nourl ASC
Isso basicamente verifica se o comprimento url é maior do que zero ou é nulo. Se eles são, eles estão na parte inferior do tipo.
Outras dicas
Você pode usar order by field('field_name', value) desc
na instrução select.