J'ai une base de données avec la colonne VARCHAR url
. Je voudrais chercher des lignes de sorte que ceux qui ont une valeur url
ont la priorité sur les autres lignes, mais sont classés par date
ligne (décroissant), donc ORDER BY 'url' DESC, 'date' DESC
ne fonctionnerait pas car il les classerait par ordre alphabétique en premier. En gros, il ressemblerait à quelque chose comme ceci:Zend framework SQL sélectionner la construction de la requête (ORDER BY)
Tableau:
ID | Url | Date
1 | http://...| 1001
2 | | 1002
3 | | 1003
4 | http://...| 1005
5 | http://...| 1004
Classé:
ID | Url | Date
4 | http://...| 1005
5 | http://...| 1004
1 | http://...| 1001
3 | | 1003
2 | | 1002
Quelle serait la bonne façon zend framework (ou au moins la requête SQL) pour le faire?
Il est peut-être préférable d'utiliser l'instruction CASE car elle est conforme à la norme ANSI. De même, vous pouvez placer l'instruction case/if directement dans la clause ORDER by - vous n'avez donc pas besoin de sélectionner une colonne fictive – asgeo1
Je peux y remédier. Je pense que j'ai toujours pensé à ceux-ci comme étant plus pour les procédures stockées. Personnellement, je le laisserais probablement toujours dans la liste des colonnes. Il pourrait être sympa de faire la logique sur la colonne nourl. –