Zend framework SQL SELECT Abfrage Erzeugungs (ORDER BY)
-
19-09-2019 - |
Frage
habe ich eine Datenbank mit VARCHAR Spalte url
. Ich mochte Zeilen holen, so dass diejenigen, die jeden url
Wert haben Vorrang vor anderen Reihen haben, werden aber durch date
Reihe (absteigend) bestellt, so ORDER BY 'url' DESC, 'date' DESC
nicht funktionieren würde, wie es sie in alphabetischer Reihenfolge zuerst bestellen würde. Grundsätzlich wäre es etwa so aussehen:
Table:
ID | Url | Date
1 | http://...| 1001
2 | | 1002
3 | | 1003
4 | http://...| 1005
5 | http://...| 1004
Sortiert:
ID | Url | Date
4 | http://...| 1005
5 | http://...| 1004
1 | http://...| 1001
3 | | 1003
2 | | 1002
Was die richtigen zend framework Art und Weise (oder zumindest SQL-Abfrage) sein würde, es zu tun?
Lösung
Mit SQL, man könnte so etwas wie ...
Es wird Art von hässlich, wenn Sie NULL-Werte auf das URL-Feld erlauben auch.
SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl
FROM url ORDER BY nourl ASC
Diese prüft grundsätzlich, ob die URL-Länge größer als Null ist oder ist null. Wenn sie sind, sind sie an der Unterseite der Art.
Andere Tipps
Sie order by field('field_name', value) desc
in der select-Anweisung verwenden können.