Estimados, tengo el siguiente problema:
Necesito agrupar varias consultas en una sola. tengo 4 consultas de la siguiente estructura:
Código:
select u.nombre_usuario, count(*) from estados_canales e1, usuarios u where e1.canales_id=3 and e1.fecha_asignacion between '2011-08-01' AND '2011-08-31' and usuarios_id = usuario_asignado and u.id = e1.usuarios_id group by u.id;
Esta consulta me retorna
Nombre Usuario - Cantidad
analista1 - 2
analista2 - 2
Código:
select u.nombre_usuario, count(*)
from usuarios u, historial_solicitudes hs
where hs.canales_id=3
and hs.fecha between '2011-08-01' AND '2011-08-31'
and u.id = hs.usuarios_id
and hs.estados_id=7
group by u.id;
Esta consulta me retorna vacío
Código:
select u.nombre_usuario, count(*) from estados_canales e1, usuarios u
where e1.canales_id=3 -- and e1.fecha between '2011-08-01' AND '2011-08-31'
and e1.estados_id=1
and u.id = e1.usuarios_id
group by u.id;
Esta consulta me retorna
Nombre Usuario - Cantidad
analista1 - 2
analista2 - 1
Código:
select u.nombre_usuario, count(*) from estados_canales e1, usuarios u, solicitudes s
where e1.canales_id=3 -- and e1.fecha between '2011-08-01' AND '2011-08-31'
and '2011-08-23' > s.dead_line
and s.id = e1.solicitudes_id
and u.id = e1.usuarios_id
and u.roles_id = 3
group by u.id;
Esta consulta me retorna
Nombre Usuario - Cantidad
analista1 - 14
analista2 - 2
Tengo la siguiente agrupación pero me retorna la suma de ambos analistas y los necesito mostrar por separado
Código:
select a.nombre
,u.nombre_usuario
,(select count(*) from estados_canales e1, usuarios u where e1.canales_id= e.canales_id and e1.fecha_asignacion between '2011-08-01' AND '2011-08-31' and usuarios_id = usuario_asignado and u.id = e1.usuarios_id) as 'asignados'
,(select count(*) from historial_solicitudes hs where hs.canales_id = e.canales_id and hs.fecha between '2011-08-01' AND '2011-08-31' and hs.usuarios_id = u.id) as 'Contestados'
,(select count(*) from estados_canales e1, usuarios u where e1.estados_id=1 and e1.canales_id=e.canales_id and e1.usuarios_id = u.id) as 'Pendientes'
,(select count(*) from estados_canales e1, solicitudes s where s.id = e.solicitudes_id and '2011-08-23' > s.dead_line and e1.canales_id=e.canales_id ) as 'Vencidas'
from estados_canales e
,solicitudes s
,areas a
,usuarios u
WHERE
s.id = e.solicitudes_id
and a.id = s.areas_id
AND u.id = e.usuarios_id
AND e.canales_id=3
AND u.roles_id = 3
group by a.id, u.id;
Esta consulta que estoy intentando agrupar me retorna lo siguiente:
Nombre materia - usuario - asignados - contestados - pendientes - vencidas
'Concesion de Beneficios', 'analista1', '4', '32', '3', '17'
'Concesion de Beneficios', 'analista2', '4', '4', '3', '17'
'Recaudación', 'analista1', '4', '32', '3', '17'
Como decía si nos fijamos en la primera columna debería mostarme 2 para analista2 y 2 para analista1, pero me esta retornado 4, lo que corresponde a la primera consulta expuesta aquí.
¿Que estoy haciendo mal?
¿Alguien podría explicarme como agrupar estas consultas en una sola?
Desde ya muchas gracias.