Zend marco de SQL construcción consulta de selección (ORDER BY)
-
19-09-2019 - |
Pregunta
Tengo una base de datos con VARCHAR url
columna. Me gustaría recuperar filas de manera que los que tienen algún valor url
tienen prioridad sobre las otras filas, pero están clasificadas por fila date
(descendente), por lo ORDER BY 'url' DESC, 'date' DESC
No trabajaría como sería ordenar alfabéticamente primero. Básicamente, se vería algo como esto:
Tabla:
ID | Url | Date
1 | http://...| 1001
2 | | 1002
3 | | 1003
4 | http://...| 1005
5 | http://...| 1004
Ordenado:
ID | Url | Date
4 | http://...| 1005
5 | http://...| 1004
1 | http://...| 1001
3 | | 1003
2 | | 1002
¿Cuál sería la forma más adecuada de Zend Framework (o al menos de consulta SQL) para hacerlo?
Solución
Con SQL, usted podría así que algo como ...
Se pone un poco feo si se permite que los valores nulos en el campo URL también.
SELECT * , IF(LENGTH(url) = 0 OR url IS NULL, 1, 0) AS nourl
FROM url ORDER BY nourl ASC
Esto básicamente comprueba para ver si la longitud url es mayor que cero o es nulo. Si lo están, que están en el fondo de la clase.
Otros consejos
Se puede usar order by field('field_name', value) desc
en la instrucción SELECT.