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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top