Ver Mensaje Individual
  #13 (permalink)  
Antiguo 19/08/2008, 10:27
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿Como arreglar esta consulta?

Al igual que Genetix, no entiendo una parte de la consulta. Y aunque no estoy seguro de lo que voy a sugerirte, empezaré por aquí.

¿Por qué una subconsulta, si las tarifas están relacionadas con las rutas o con los meses (no sé cómo has hecho la relación)... yo quitaría el SELECT... de esa subconsulta sobre el precio mínimo de las tarifas. Creo que el GROUP BY te sirve para todo, incluido esto, y que las condiciones del WHERE ya las tenías establecidas para las rutas, por lo que no serían necesarias otra vez en la subconsulta, según creo. Pon sólo tras tarifas.mes as mestarifa una coma como un dato más y antes del FROM...
MIN(LEAST(if(tar.preciopromocion>0, tar.preciopromocion, 100000), 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))) AS tarifamenor

A ver si con eso empezamos a ver algo de luz

En cuanto a lo otro que preguntas:
AND idruta IN (SELECT tar2.idruta AS iditi FROM tarifas AS tar2 WHERE tar2.idruta='idruta' AND tar2.completo='0' AND tar2.mes='mestarifa')
imagino que 'idruta', 'mestarifa', etc. son variables. Has hecho directamente las consultas con una idruta concreta y un mes concreto, es decir, AND idruta IN (SELECT tar2.idruta AS iditi FROM tarifas AS tar2 WHERE tar2.idruta= 1 AND tar2.completo='0' AND tar2.mes=11)

No sé cómo te traes el mes y tampoco sabemos lo que es tar2.completo para ayudarte, pero debes probar sustituyendo variables o términos por datos concretos que sepas que están en la base.

Última edición por jurena; 19/08/2008 a las 10:49