PDA

Ver la Versión Completa : Consulta - MSSQL -- no hay caso


Viet
16-10-2003, 18:44:56
Buenas

Tengo una consultita que me esta poniendo loco

tablas : (aclaracion: este es un modelo simplificado, para que sea mas legible)

detalle (id_empleado, id_aplicacion, cantidad)
aplicaciones(id_aplicacion, id_grupo)
grupos(id_grupo, descripcion)
empleados(id_empleado, Nombre)

Lo que quiero obtener es la cantidad de aplicaciones por grupo y por empleado

mi consulta es:

select e.nombre , g.descripcion , sum(d.cantidad)
from detalle d
inner join aplicaciones a on (a.id_aplicacion=d.id_aplicacion)
inner join grupos g on (g.id_grupo=a.id_grupo)
inner join empleados e on (e.id_empleados=d.id_empleado)
group by
e.nombre, g.descripcion


Por lo que yo veo esta todo bien, pero en ves de darme el total por grupo para cada empleado, me da por cada empleado, el total que existen por grupo, por cada grupo.

Ejemplo:

detalle
empleado aplicacion cant
1 1000 5
1 1002 6
2 1000 10
2 1002 7
2 1003 3

empleados

id nombre
1 pepe
2 juan

aplicaciones
id grupo
1000 1
1002 2
1003 1

grupos
id descrip
1 grupo1
2 grupo2

esto me tendria que dar

nombre grupo cant
pepe grupo1 5
pepe grupo2 6
juan grupo1 13
juan grupo2 7

sin embargo me da

nombre grupo cant
pepe grupo1 18
pepe grupo2 13
juan grupo1 18
juan grupo2 13


Les juro que no he tomado nada con alcohol... y segun mis calculos esto esta muy mal.... la verdad es que no puedo ver donde esta el problema ??? y sin embargo me parece una consulta por demas simple....

Gracias por su tiempo ... y perdonen que es tan largo la consulta pero queria explicar bien el caso.. ;)

guillotmarc
16-10-2003, 21:38:24
Hola Viet.

Prueba a poner la consulta completa, sin simplificar, porqué esta se ve bien. No le sé encontrar ningun problema. ¿ Tambien falla ?

Saludos.

Viet
16-10-2003, 21:56:56
Hola Marc (haber cuando encuentro una consulta tuya asi empiezo a pagarte los favores.... aunque van a tener que ser unas cuantas)

ahi va la consulta
select top 10
e.id_empleado,
0,
a.id_grupo_aplicaciones,
SUM(ai.callsanswered) AS callsanswered,
max(ll.hora)

from a_iagentbyapplicationstat ai
inner join aplicaciones a on (a.id_aplicacion=ai.applicationid)
inner join grupo_aplicaciones g on(a.id_grupo_aplicaciones=a.id_grupo_aplicaciones)
inner join empleados e on (e.id_symposium=ai.agentlogin)
inner join a_llamadas ll on (ll.id_empleado=e.id_empleado)

group by
e.id_empleado,
a.id_grupo_aplicaciones


es practicamente lo mismo o incluso mas simple

__cadetill
17-10-2003, 14:31:35
Supongo que será un problema de tecleo, pero en segundo inner join estás utilizando la misma tabla en la comparación.

Viet
17-10-2003, 14:36:18
Cadetill un millon de gracias !!!.... la verdad es que ese tipo de errores me matan ...

Saludos desde Aquí !;)

__cadetill
17-10-2003, 15:08:49
Posteado originalmente por Viet
la verdad es que ese tipo de errores me matan ...

Todos los errores fueran como ese :p