Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda con order by y 0

Estas en el tema de Duda con order by y 0 en el foro de Mysql en Foros del Web. Hola, Tengo la siguiente consulta SELECT * FROM tabla WHERE id=50 ORDER BY orden En la tabla tengo la columna orden con registros en 1,2,3, ...
  #1 (permalink)  
Antiguo 05/11/2010, 13:32
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 16 años
Puntos: 1
Pregunta Duda con order by y 0

Hola,

Tengo la siguiente consulta

SELECT * FROM tabla WHERE id=50 ORDER BY orden

En la tabla tengo la columna orden con registros en 1,2,3, etc y el resto con 0,
el problema es que al ordenar siempre antepone los registros con 0 y luego el resto, nececesito que ordene primero los registros numerados y luego ponga los que estan en 0, como puedo hacerlo?

Gracias!
  #2 (permalink)  
Antiguo 05/11/2010, 13:50
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Duda con order by y 0

Hola vanditsession igual y hay alguna otra manera de hacer lo que quieres, pero lo que se me ocurre hacer es esto:

Código MySQL:
Ver original
  1. SELECT * FROM tabla ORDER BY CASE WHEN (orden != 0) then orden else 9999999999 end

puse en el else un numero exageradamente grande, dependerá del valor máximo que pueda tomar tu campo Orden.

Saludos y espero que te pueda ayudar de algo el código
Leo.
  #3 (permalink)  
Antiguo 05/11/2010, 17:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Duda con order by y 0

SELECT campo1, campo2, campo3 FROM tabla WHERE id=50 where orden > 0 ORDER BY orden, campo1
UNION ALL
SELECT campo1, campo2, campo3 FROM tabla WHERE id=50 where orden = 0 ORDER BY campo1

Etiquetas: order
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:32.