Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

¿Por que multiplica totales?

Estas en el tema de ¿Por que multiplica totales? en el foro de SQL Server en Foros del Web. Buenas, tengo la siguinete consulta: SELECT DISTINCT T1.CodigoCli, T1.NombreCli, T3.Name,SUM(ISNULL(T0.DocTotal,0)) FROM ALBARANES T0 RIGHT JOIN CLIENTES T1 ON T0.CodigoCli=T1.CodigoCli AND T0.DocDate BETWEEN '[%1]' AND '[%2]' ...
  #1 (permalink)  
Antiguo 13/12/2006, 11:21
Avatar de peperet  
Fecha de Ingreso: diciembre-2001
Mensajes: 24
Antigüedad: 22 años, 4 meses
Puntos: 0
Exclamación ¿Por que multiplica totales?

Buenas, tengo la siguinete consulta:

SELECT DISTINCT T1.CodigoCli, T1.NombreCli, T3.Name,SUM(ISNULL(T0.DocTotal,0))
FROM ALBARANES T0 RIGHT JOIN CLIENTES T1 ON T0.CodigoCli=T1.CodigoCli AND T0.DocDate BETWEEN '[%1]' AND '[%2]' INNER JOIN Clientes1 T2 ON T1.CodigoCli=T2.CodigoCli INNER JOIN Prov T3 ON T2.State=T3.Code
GROUP BY T1.CodigoCli, T1.NombreCli, T3.Name

Lo que se pretende en esta consulta es que me muestre un listado con todos los clientes que existen y dados unos rangos de fechas me muestre el importe total de cada cliente, si no han comprado el importe se queda a 0.
El tema es que al usar SUM(ISNULL(T0.DocTotal,0)) ,donde DocTotal es el campo donde se guarda el importe total del albarán, esta operacion sale mal, ya que no se corresponde con la realidad, me sale un importe mucho mas elevado, multiplicado por algun numero.
Hay alguna solucion a mi problema?

Salu2!
  #2 (permalink)  
Antiguo 13/12/2006, 11:47
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: ¿Por que multiplica totales?

Que tal Pepe.

En tus tablas tienes una relación uno a muchos, te voy a poner un ejemplo de los que te esta pasando.

Voy a poner un jemplo usando una tabla llamada Madre y otra Hijo.

Madre
IdMadre Nombre Saldo
1 Martha 100
2 Rocio 50

Hijo
IdHijo IdMadre Nombre
1 1 Juan
2 1 Beto
3 1 José
4 2 Pedro
5 2 Maria

Ahora bien si hago la siguiente consulta, el saldo de la Madre aparecerá multiplicado por la cantidad de hijos.
Código:
Select m.IdMadre, Sum(m.Saldo) as Saldo
FROM Madre m INNER JOIN Hijo h On m.IdMadre = h.IdHijo
Resultado:

IdMadre Saldo
1 300
2 100


Espero haber sido claro.

Saludos y suerte!
  #3 (permalink)  
Antiguo 13/12/2006, 12:20
Avatar de peperet  
Fecha de Ingreso: diciembre-2001
Mensajes: 24
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: ¿Por que multiplica totales?

Saludos daniel,

en el ejemplo lo veo claro, pero en mi caso necesito hacer estas relaciones, ya que de eso se trata la consulta.
Hay alguna manera de hacerlo y que me salga bien el importe?

Saludos!
  #4 (permalink)  
Antiguo 13/12/2006, 20:31
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: ¿Por que multiplica totales?

por que no pones la estructura de tus tablas, y pensamos en la solucion, por que así tenemos que imaginarlas y es medio aburrido! :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:17.