Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2012, 03:17
Krato
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años, 5 meses
Puntos: 0
Sql con meses y por empleados

Hola buenas.

Estoy intentando realizar una consulta pero no consigo que se muestre lo que quiero.

La consulta que quiero sacar es un listado por meses y por empleados. Y consigo hacerla, pero los meses donde un empleado no tiene , no me muestra nada, y lo que yo quiero es que me muestre todos los meses y todos los empleados.

Yo quiero conseguir un resultado así:

Código:
Abril			8	Juan
Abril			0	Marcela
Abril			0	Jose Antonio
Julio			0	Juan
Julio			1	Marcela
Julio			0	Jose Antonio
Agosto			0	Juan
Agosto			1	Marcela
Agosto			1	Jose Antonio
Septiembre		0	Juan
Septiembre		1	Marcela
Septiembre		1	Jose Antonio
Octubre			0	Juan
Octubre			2	Marcela
Octubre			0	Jose Antonio
Noviembre		3	Juan
Noviembre		19	Marcela
Noviembre		5	Jose Antonio
Diciembre		0	Juan
Diciembre		4	Marcela
Diciembre		4	Jose Antonio
Febrero			0	Juan
Febrero			2	Marcela
Febrero			0	Jose Antonio
Y lo único que consigo es esto:

Código:
Abril			8	Juan
Julio			1	Marcela
Agosto			1	Jose Antonio
Agosto			1	Marcela
Septiembre		1	Jose Antonio
Septiembre		1	Marcela
Octubre			2	Marcela
Noviembre		5	Jose Antonio
Noviembre		19	Marcela
Diciembre		4	Marcela
Febrero			2	Marcela
Es decir, los meses donde un empleado no tiene datos, no los muestra.

La consulta la hago relacionando 3 tablas, una con los datos principales, otra que hace de conexión entre la principal y la de empleados con un campo más de fecha, y la de empleados, de modo que la sql me queda de éste modo:

Código SQL:
Ver original
  1. SELECT
  2.         CASE WHEN MONTH(f_encargo) = 1 THEN 'Enero'
  3.         WHEN MONTH(f_encargo) = 2 THEN 'Febrero'
  4.         WHEN MONTH(f_encargo) = 3 THEN 'Marzo'
  5.         WHEN MONTH(f_encargo) = 4 THEN 'Abril'
  6.         WHEN MONTH(f_encargo) = 5 THEN 'Mayo'
  7.         WHEN MONTH(f_encargo) = 6 THEN 'Junio'
  8.         WHEN MONTH(f_encargo) = 7 THEN 'Julio'
  9.         WHEN MONTH(f_encargo) = 8 THEN 'Agosto'
  10.         WHEN MONTH(f_encargo) = 9 THEN 'Septiembre'
  11.         WHEN MONTH(f_encargo) = 10 THEN 'Octubre'
  12.         WHEN MONTH(f_encargo) = 11 THEN 'Noviembre'
  13.         WHEN MONTH(f_encargo) = 12 THEN 'Diciembre'
  14.         ELSE 'No Mes' END AS Meses
  15.     ,  IFNULL(COUNT(v.REF), 0) AS Total, emv.Nombre
  16.     FROM ventas  AS v
  17.     RIGHT JOIN ventas_usuario AS vent ON v.REF = vent.REF
  18.     RIGHT JOIN empleados AS emp ON vent.id_usu = emp .id_emp
  19.         WHERE  emp .id_emp = (SELECT id_usu FROM ventas_usuario WHERE REF = v.REF ORDER BY fecha DESC LIMIT 0, 1)
  20.     GROUP BY YEAR(f_encargo), MONTH(f_encargo), emp .Nombre

A ver si me podéis echar un cable.

Muchas gracias