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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top