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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top