Ver Mensaje Individual
  #20 (permalink)  
Antiguo 08/05/2008, 10:27
yazo
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 21 años
Puntos: 3
Hola:

He probado haciendo una consulta en el select de la siguiente manera:

SELECT ..., (SELECT MIN(IF(0=tarifa1, IF(0=tarifa2, IF(0=tarifa3, IF(0=tarifa4, tarifapromo, tarifa4), tarifa3), tarifa2), tarifa1)) AS tarifaprecio FROM Tarifas t WHERE t.idproducto=productos.id) AS tarifaorden tarifa FROM ... ORDER BY tarifaorden

El problema es que en mysql 5 funciona bien, aunque un poco mas lento, pero con mysql4 nada.

¿Se os ocurre porque puede ser o como puedo solucionarlo?

Muchas Gracias

Hola,

Porque si pongo esta subconsulta funciona correctamente:

SELECT MIN(LEAST(if(tar.tarifa1>0, tar.tarifa1, 100000), if(tar.tarifa2>0, tar.tarifa2, 100000), if(tar.tarifa3>0, tar.tarifa3, 100000), if(tar.tarifa4>0, tar.tarifa4, 100000), if(tar.tarifa5>0, tar.tarifa5, 100000), if(tar.tarifa6>0, tar.tarifa6, 100000), if(tar.tarifa7>0, tar.tarifa7, 100000), if(tar.tarifa8>0, tar.tarifa8, 100000))) AS tarifamenor FROM tarifas AS tar WHERE tar.iditinerario=itinerarios.id

Me bastaría con este pero la consulta tarda mucho en realizarse.

Si pongo comillas simple en itinerarios.id no funciona y me devuelve vacio:

SELECT MIN(LEAST(if(tar.tarifa1>0, tar.tarifa1, 100000), if(tar.tarifa2>0, tar.tarifa2, 100000), if(tar.tarifa3>0, tar.tarifa3, 100000), if(tar.tarifa4>0, tar.tarifa4, 100000), if(tar.tarifa5>0, tar.tarifa5, 100000), if(tar.tarifa6>0, tar.tarifa6, 100000), if(tar.tarifa7>0, tar.tarifa7, 100000), if(tar.tarifa8>0, tar.tarifa8, 100000))) AS tarifamenor FROM tarifas AS tar WHERE tar.iditinerario='itinerarios.id'

Gracias

Última edición por GatorV; 07/08/2008 a las 08:51