Zend Framework SQL costruzione query di selezione (ORDER BY)
-
19-09-2019 - |
Domanda
Ho un database con VARCHAR colonna url
. Vorrei recuperare righe in modo che quelli che hanno un valore url
hanno priorità sugli altri righe, ma sono ordinate in fila date
(discendente), quindi ORDER BY 'url' DESC, 'date' DESC
non funzionerebbe come li ordinare alfabeticamente prima. In sostanza, sarebbe simile a questa:
Tabella:
ID | Url | Date
1 | http://...| 1001
2 | | 1002
3 | | 1003
4 | http://...| 1005
5 | http://...| 1004
Ordinato:
ID | Url | Date
4 | http://...| 1005
5 | http://...| 1004
1 | http://...| 1001
3 | | 1003
2 | | 1002
Quale sarebbe il modo corretto quadro Zend (o almeno query SQL) per farlo?
Soluzione
Con SQL, si potrebbe quindi qualcosa di simile ...
Si ottiene tipo di brutto se si consente valori nulli sul campo URL, nonche.
SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl
FROM url ORDER BY nourl ASC
Questa verifica fondamentalmente per vedere se la lunghezza url è maggiore di zero o è nullo. Se lo sono, sono alla base del genere.
Altri suggerimenti
Si potrebbe utilizzare order by field('field_name', value) desc
nell'istruzione SELECT.