Ver Mensaje Individual
  #12 (permalink)  
Antiguo 22/07/2009, 08:00
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Agrupar datetime por medias horas?? se puede???

chelodelsur..

Vaya si fue dificil encontrar el por que no respetaba el left o right join al momento de hacer la consulta.
Todo se da por la condición que se maneja en el where. Desde ahí, estamos limitando toda una consulta con referencia a el campo fecha_date2 y no teniendo en cuenta a mediahora de la tabla horas.

Código mysql:
Ver original
  1.       ifnull(YEAR(fecha_date2),"SIN REGISTROS") AS `año`,    
  2.       UPPER(CASE WHEN MONTH(fecha_date2) = 1 THEN "enero"  
  3.                  WHEN MONTH(fecha_date2) = 2 THEN "febrero"
  4.                  WHEN MONTH(fecha_date2) = 3 THEN "marzo"  
  5.                  WHEN MONTH(fecha_date2) = 4 THEN "abril"  
  6.                  WHEN MONTH(fecha_date2) = 5 THEN "mayo"  
  7.                  WHEN MONTH(fecha_date2) = 6 THEN "junio"  
  8.                  WHEN MONTH(fecha_date2) = 7 THEN "julio"  
  9.                  WHEN MONTH(fecha_date2) = 8 THEN "agosto"  
  10.                  WHEN MONTH(fecha_date2) = 9 THEN "septiembre"  
  11.                  WHEN MONTH(fecha_date2) = 10 THEN "octubre"  
  12.                  WHEN MONTH(fecha_date2) = 11 THEN "noviembre"  
  13.                  WHEN MONTH(fecha_date2) = 12 THEN "diciembre"  
  14.                                ELSE "Sin registros" END)  AS MES ,    
  15.       UPPER(CASE WHEN WEEKDAY(fecha_date2) = 0 THEN "Lunes"
  16.                  WHEN WEEKDAY(fecha_date2) = 1 THEN "Martes"
  17.                  WHEN WEEKDAY(fecha_date2) = 2 THEN "Miercoles"
  18.                  WHEN WEEKDAY(fecha_date2) = 3 THEN "Jueves"
  19.                  WHEN WEEKDAY(fecha_date2) = 4 THEN "Viernes"
  20.                  WHEN WEEKDAY(fecha_date2) = 5 THEN "Sabado"
  21.                  WHEN WEEKDAY(fecha_date2) = 6 THEN "Domingo"
  22.                                 ELSE "Sin registros" END) AS `DIA`,
  23.       ifnull(DATE_FORMAT(fecha_date2,'%Y-%m-%d'),"SIN REGISTROS") AS fecha,
  24.       ifnull(TIME_FORMAT(fecha_date2,'%H:%i:%s'),"SIN REGISTROS") AS Horareal,
  25.       h.mediahora AS `mediahora`,  
  26.       ifnull(SUM(IF(recibido= '',0,recibido)),"SIN REGISTROS") AS Recibido
  27. FROM Reg_15_minutos
  28. RIGHT JOIN horas h
  29. ON  h.mediahora =  CONCAT(IF(HOUR(fecha_date2)<10,CONCAT('0',HOUR(fecha_date2)) , HOUR(fecha_date2)),':', IF(MINUTE(fecha_date2)<29,'00','30'),':','00')  
  30. WHERE (fecha_date2 BETWEEN '2009-03-02 00:00:00' AND '2009-03-02 09:00:00') OR (h.mediahora between time('2009-03-02 00:00:00') and time('2009-03-02 09:00:00'))
  31. GROUP BY YEAR(fecha_date2), MONTH(fecha_date2), DAYOFMONTH(fecha_date2), `mediahora`
  32. ORDER BY YEAR(fecha_date2) ASC, MONTH(fecha_date2) ASC, WEEKDAY(fecha_date2)ASC, DAYOFMONTH(fecha_date2) ASC, h.mediahora ASC;

He probado esto y parece funcionar. Pruebalo y nos cuentas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming