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

[SOLUCIONADO] Problema al ordenar dos campos

Estas en el tema de Problema al ordenar dos campos en el foro de Mysql en Foros del Web. Buenas amigos . tengo un problema .. sucede que tengo una tabla la cual tiene dos campos de precio uno de venta y otro de ...
  #1 (permalink)  
Antiguo 12/02/2013, 09:53
 
Fecha de Ingreso: marzo-2001
Ubicación: Lima Peru
Mensajes: 10
Antigüedad: 23 años, 1 mes
Puntos: 0
Problema al ordenar dos campos

Buenas amigos . tengo un problema .. sucede que tengo una tabla la cual tiene dos campos de precio uno de venta y otro de alquiler ... el tema es que quiero ordenarlo en base estrictamente a alquiler sin tomar en cuenta los valores cero .. es decir .. ordenar esto:

Precio1 - Precio 2
0 - 75000
2700 - 0
1500 - 20000
0 - 40000
2000 - 0


en

Precio1 - Precio 2
1500 - 20000
2000 - 0
2700 - 0
0 - 40000
0 - 75000

como ven el orden se hace en base al precio de alquiler (precio 1) tomando el orden del precio venta en un segundo interes. Esto no funciona con ORDER BY Precio1, Precio2 porque ordenaria los valores 0 primero.

please heeeeeeeeeeeelp!!!!
  #2 (permalink)  
Antiguo 12/02/2013, 10:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema al ordenar dos campos

Código MySQL:
Ver original
  1. FROM `tabla`
  2. ORDER BY FIELD( Precio1, 0 ) , Precio1
  #3 (permalink)  
Antiguo 12/02/2013, 10:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Problema al ordenar dos campos

Hola vissualweb:

Prueba con una ordenación condicional... así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +---------+---------+
  3. | Precio1 | Precio2 |
  4. +---------+---------+
  5. |       0 |   75000 |
  6. |    2700 |       0 |
  7. |    1500 |   20000 |
  8. |       0 |   40000 |
  9. |    2000 |       0 |
  10. +---------+---------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT * FROM tabla ORDER BY IF(Precio1 != 0, Precio1, Precio2);
  14. +---------+---------+
  15. | Precio1 | Precio2 |
  16. +---------+---------+
  17. |    1500 |   20000 |
  18. |    2000 |       0 |
  19. |    2700 |       0 |
  20. |       0 |   40000 |
  21. |       0 |   75000 |
  22. +---------+---------+
  23. 5 rows in set (0.00 sec)

Saludos
Leo.
  #4 (permalink)  
Antiguo 12/02/2013, 11:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema al ordenar dos campos

Leo,
veo un problema a la propuesta condicional, aunque no sé si se dará el caso. Si ambos precios ,Precio1 y Precio2 son 0, ese registro pasaría a ser el primero de la lista y rompería el orden esperado que es, primero los que no son cero y luego los cero
Y si quieres añadir un segundo filtro para que en ese caso ordene por Precio2
Código MySQL:
Ver original
  1.     FROM `tabla`
  2.     ORDER BY FIELD( Precio1, 0) , Precio1, Precio2
  #5 (permalink)  
Antiguo 12/02/2013, 11:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Problema al ordenar dos campos

Tienes toda la razón jurena, no había considerado tus observaciones...

Excelente aporte!!!

Saludos
Leo.
  #6 (permalink)  
Antiguo 12/02/2013, 11:42
 
Fecha de Ingreso: marzo-2001
Ubicación: Lima Peru
Mensajes: 10
Antigüedad: 23 años, 1 mes
Puntos: 0
Respuesta: Problema al ordenar dos campos

Finalmente encontre dos soluiciones .. una investigando y probando (que pena que no haya mucha info en la red donde ORDER BY condicionales) y la otra gracias a jurema .. guardare ambas ya que me dan el mismo resultado deseado ...

aqui las pego por si alguien mas tiene el mismo problema



order by if (Precio1>0,0,1), Precio1, Precio2

ORDER BY FIELD( Precio1, 0 ) , Precio1


saludos y gracias :)

Última edición por vissualweb; 12/02/2013 a las 12:48

Etiquetas: campos, tabla
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 18:20.