Tengo nuevamente porblemas con un join
Código:
Este codigo hace una consulta a dos tablas que estan en bases distintas, dentro del mismo host. el dato en comun es el campo fecha_date, en ambas tablas.SELECT log.FECHA_DATE AS FECHA, count(IF(log.fecha_date,0,0)) AS `LLAMADAS ENVIADAS A IVR`, SUM(IF(log.trf_agente='',log.t_mensaje='CODIGO' OR log.t_mensaje='GENERAL' OR log.t_mensaje='GENERAL PRE' OR log.t_mensaje='HOTLINE'OR log.t_mensaje='HOTLINE-ANEXO',0))AS `ATE MENSAJE ESPECIAL_IVR`, SUM(IF(TIPO_LLAMADA='CAI',RECIBIDO,0)) CAI, SUM(IF(TIPO_LLAMADA='IVR COMERCIAL',RECIBIDO,0)) IVR_COM, SUM(IF(TIPO_LLAMADA='IVR SUMINISTRO',RECIBIDO,0)) IVR_SUMI, SUM(IF(TIPO_LLAMADA='IVR OTROS',RECIBIDO,0)) IVR_OTROS, SUM(IF(TIPO_LLAMADA='CAI' OR TIPO_LLAMADA='IVR COMERCIAL' OR TIPO_LLAMADA='IVR SUMINISTRO' OR TIPO_LLAMADA='IVR OTROS' OR TIPO_LLAMADA='CALEFACCION',RECIBIDO,0)) TOTAL_RECIBIDO, SUM(IF(TIPO_LLAMADA='CAI' OR TIPO_LLAMADA='IVR COMERCIAL' OR TIPO_LLAMADA='IVR SUMINISTRO' OR TIPO_LLAMADA='IVR OTROS' OR TIPO_LLAMADA='CALEFACCION',CONTESTADO,0)) TOTAL_CONTESTADO, SUM(IF(TIPO_LLAMADA='CAI' OR TIPO_LLAMADA='IVR COMERCIAL' OR TIPO_LLAMADA='IVR SUMINISTRO' OR TIPO_LLAMADA='IVR OTROS' OR TIPO_LLAMADA='CALEFACCION',ABANDONADO,0)) TOTAL_ABANDONADO FROM llamadas.log LEFT JOIN rrserver.reg_diario ON log.FECHA_DATE = reg_diario.FECHA_DATE WHERE log.FECHA_Date BETWEEN '2008-09-22' AND '2008-09-28' GROUP BY reg_diario.FECHA_DATE
La consulta en si, se ejecuta, pero los resultados no son los correctos.
Por ejemplo la consulta debe traer la cantidad de registros para una fecha agrupando en varias categorías: " llamadas enviadas a IVR", "atendidas por mensaje especial ivr", etc.(estos datos estan en la tabla log, de la base Datos llamadas) Bien el problema que se me presenta es que en la tabla reg_diario, del la base rrserver, hay varios tipos de llamadas para una misma fecha, por ejemplo: para la fecha 2008-09-28, hay registros de llamadas en CAI, IVR_COM, e IVR_SUMI. Entonces al hacer la consulta si por ejemplo en el campo "ATE MENSAJE ESPECIAL_IVR" hay 10 registros para la fecha 2008-09-28 entoces la consulta me dice que hay 30, asumo que es porque en la tabla reg_diario para esa fecha hay datos en 3 tipos de llamadas (CAI, IVR_COM, e IVR_SUMI), por que al probar con otra fecha en donde solo hay regsitros para una determinada fecha en dos tipos de llamadas este resultado lo multiplica por 2.
Uffff salio medio largo el cuento, espero haberme explicado bien.
Como siempre desde ya gracias por su siempre oportuna ayuda.
Marcelo