Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/09/2010, 09:23
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: ¿Como hacer esta consulta?

jeje, me ha costao un rato sacar una forma, no se si sera la más idonea, te la explico por partes

Primero esto:

(SELECT id,precio1 from tarifas where precio1>0 order by precio1 ASC LIMIT 1)

Con eso obtendriamos el menor de precio1 que sea mayor que 0....

1 - 100

Pero si usamos el UNION para ir agregando registros......

(SELECT id,precio1 from tarifas where precio1>0 order by precio1 ASC LIMIT 1) UNION
(SELECT id,precio2 as precio1 from tarifas where precio2>0 order by precio2 ASC LIMIT 1) UNION
(SELECT id,precio3 as precio1 from tarifas where precio2>0 order by precio3 ASC LIMIT 1)


Obtendriamos:

1 - 100
2 - 50
3 - 10


Justo las 3 filas porque es como tienes el ejemplo, no importa, hemos obtenido 3 registros independientes con su SELECT cada uno, ya solo falta el toque final:

(SELECT id,precio1 from tarifas where precio1>0 order by precio1 ASC LIMIT 1) UNION
(SELECT id,precio2 as precio1 from tarifas where precio2>0 order by precio2 ASC LIMIT 1) UNION
(SELECT id,precio3 as precio1 from tarifas where precio3>0 order by precio3 ASC LIMIT 1)
ORDER BY precio1 ASC LIMIT 1


Esos 3 minimos ahora los volvemos a ordenar para quedarnos con el primer registro. Cualquier duda preguntame, aunque debe ser la 4º o 5ª vez que uso los UNION, no soy muy experto jeje.