
14/06/2008, 00:05
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años, 3 meses Puntos: 300 | |
Respuesta: DESAFIO: Consulta imposible No entiendo lo que me dices cuando escribes que el valor es $
Imagino que valor se trata de un campo numérico (INT, FLOAT, DECIMAL), por lo que no entiendo $ sin número. Si $ es un error, una codificación del valor por defecto o alguna otra cosa, dínoslo. Si lo tienes como VARCHAR ese campo, podremos solucionarlo, pero mira y dínoslo.
Si 0000-00-00 es el valor por defecto de fecha y significa "hasta el día de hoy", la solución nos la ha propuesto gnzsoloyo y la podemos aplicar a la sintaxis que te he propuesto y creo que funciona:
SELECT c.nombre, SUM(t.valor* v.horas) AS total FROM consultores c INNER JOIN tarifas t ON c.id= t.id_consultor INNER JOIN visitas v ON v.id_consultor = t.id_consultor AND v.fecha BETWEEN fecha1 AND (IF(fecha2 = '0000-00-00', NOW(),fecha2)) WHERE t.id_consultor = 3 AND v.fecha BETWEEN '2008-01-01' AND '2008-06-30' GROUP BY t.id_consultor
Si $ significa precio por defecto 50 bastará con hacer los mismo con valor y deberías probar algo así (esto no lo he probado)
SELECT c.nombre, SUM(IF(t.valor=$, 50, t.valor)* v.horas) AS total FROM consultores c INNER JOIN tarifas t ON c.id= t.id_consultor INNER JOIN visitas v ON v.id_consultor = t.id_consultor AND v.fecha BETWEEN fecha1 AND (IF(fecha2 = '0000-00-00', NOW(),fecha2)) WHERE t.id_consultor = 3 AND v.fecha BETWEEN '2008-01-01' AND '2008-06-30' GROUP BY t.id_consultor
Explícanos un poco los valores por defecto de los campos fecha2 y valor..., pero antes dinos el tipo de campo, que imagino que debería ser numérico en el caso de valor, y cómo introduces el dato. Por ej. si es que estás usando para valor un varchar y escribes $45 cuando quieres que el valor sea 45.
Y danos también los datos concretos que te fallan: por ej., el id_consultor x tiene las tarifas con los datos siguientes y las siguientes visitas; si busco sus totales de tal a tal fecha, me da error. Pero todo ello con datos concretos, porque a mí me está funcionando bien la consulta que te propuse por el momento. Tal vez sea un problema del tipo de datos, pero eso se solucionará fácilmente. No descarto que algo vaya mal en la consulta, pero necesitamos ponerla a prueba con datos concretos.
Última edición por jurena; 14/06/2008 a las 00:34 |