Question

J'ai une base de données avec la colonne VARCHAR url. Je voudrais récupérer les lignes afin que ceux qui ont une valeur url ont la priorité sur les autres lignes, mais sont commandés par ligne de date (décroissant), donc ORDER BY 'url' DESC, 'date' DESC travaillerais pas comme il leur ordonnerait premier ordre alphabétique. En gros, il ressemblerait à quelque chose comme ceci:

Tableau:

ID   |    Url    | Date
1    | http://...| 1001
2    |           | 1002
3    |           | 1003
4    | http://...| 1005
5    | http://...| 1004

Tri:

ID   |    Url    | Date
4    | http://...| 1005
5    | http://...| 1004
1    | http://...| 1001
3    |           | 1003
2    |           | 1002

Quelle serait la façon zend framework appropriée (ou au moins la requête SQL) pour le faire?

Était-ce utile?

La solution

Avec SQL, vous pourriez donc quelque chose comme ...

Il devient laid genre de si vous permettez des valeurs nulles sur le champ URL aussi bien.

SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl 
FROM url ORDER BY nourl ASC

vérifie essentiellement pour voir si la longueur de l'URL est supérieure à zéro ou est nul. Si elles le sont, ils sont au bas de la sorte.

Autres conseils

Vous pouvez utiliser order by field('field_name', value) desc dans l'instruction select.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top