Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/02/2012, 12:09
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sql con meses y por empleados

krato,

primero debes tener una tabla con todos los meses, ya sabes, idMes y Mes. El idMes es el número de mes.
Luego cruzas primero las dos tablas así SELECT u.idUsuario, m.idMes FROM usuarios u, meses m para que te dé pares de usuarios con todos los meses; luego cruzas mediante left join con la tabla usuariodia, tabla donde yo he puesto los campos idUsuario y Dia (que es fecha), finalmente hago el group by por idUsuario e idMes. Observa la consulta:

SELECT t1.idUsuario, t1.idmes, COUNT(ud.Dia) FROM (SELECT u.idUsuario, m.idMes FROM usuarios u, meses m)t1 LEFT JOIN usuariodia ud ON t1.idUsuario = ud.idUsuario AND t1.idMes = MONTH(ud.Dia) GROUP BY t1.idUsuario, t1.idMes

Luego pondremos los datos de nombres de usuario y de mes, ahora más fácil desde la tabla meses.

Pero ojo, esto que hemos hecho entraña un peligro, agrupa por meses y usuario, pero no por mes año y usuario, y no olvides que un mes no es un mes, sino un mes de un año. Tendrías que tener una tabla con los años de los que quieres sacar datos para hacer otro cruce. Piensa en ello.