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

problemon con este SQL

Estas en el tema de problemon con este SQL en el foro de SQL Server en Foros del Web. el problema con este SQL es k un ejemplo es k me saca valores repetidos eje. tengo las tablas contrato det_contrato clientes pago SELECT contrato.numecont, ...
  #1 (permalink)  
Antiguo 14/08/2006, 22:04
Avatar de julwo  
Fecha de Ingreso: mayo-2004
Ubicación: santiago, Rep Dom
Mensajes: 252
Antigüedad: 20 años
Puntos: 0
De acuerdo problemon con este SQL

el problema con este SQL es k un ejemplo es k me saca valores repetidos
eje.
tengo las tablas
contrato
det_contrato
clientes
pago

SELECT contrato.numecont, SUM(det_contrato.preven * contrato.tiempo) - SUM(pago.montopag) AS balance
FROM contrato INNER JOIN
det_contrato ON contrato.numecont = det_contrato.numecont INNER JOIN
clientes ON contrato.codclie = clientes.codclie LEFT OUTER JOIN
pago ON contrato.numecont = pago.numecont
WHERE (contrato.codclie = 1)
GROUP BY contrato.numecont
HAVING (SUM(det_contrato.preven * contrato.tiempo) - SUM(pago.montopag) > 0)


lo ke pasa es k me devuelve pagos k no he hecho ejemplo si en el contrato tiene varios det_contrato en los pagos me suma un mismo pago tantos detalles de contrato ayan

bueno ese es uno de los SQL k me estan dando problemas mas adelante les voy poniendo los demas SQL

saludos
__________________
Cuando las cosa son Buenas, SON BUENAS! no importan las R@tas que orinen en el camino! Me SiGUe!!
  #2 (permalink)  
Antiguo 15/08/2006, 08:45
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
como que te suma pagos que no has hecho???

en el detalle esta el registro de los pagos que deberan hacerse?? pagos planeados o algo asi???

tienes forma de diferenciar estos pagos planeados de los pagos realizados?? algo como la fecha de pago?? o estatus??
  #3 (permalink)  
Antiguo 15/08/2006, 21:57
Avatar de julwo  
Fecha de Ingreso: mayo-2004
Ubicación: santiago, Rep Dom
Mensajes: 252
Antigüedad: 20 años
Puntos: 0
Pregunta

ok
me explico mejor
supongamos que el cliente 1 kiere hacer un pago de $500 a un contrato k tiene vario detalles eje.

contrato
numecont tiempo codclie
1-----------4--------1

det_contrato
numecont codvall preven
1----------2------$2500
1----------5------$3000
1----------6------$1500

pago
idpag numecont montopag
1-----------1------$500

clientes
codclie nombre
1---------juan


el problema es que solo hize un pago de 500 pero como el contrato tiene varios det_contrato los ve como 1500 ya k el sql trae 3 registros

aki esta el sql

SELECT contrato.numecont, SUM(det_contrato.preven * contrato.tiempo) - SUM(pago.montopag) AS balance
FROM contrato INNER JOIN
det_contrato ON contrato.numecont = det_contrato.numecont INNER JOIN
clientes ON contrato.codclie = clientes.codclie LEFT OUTER JOIN
pago ON contrato.numecont = pago.numecont
WHERE (contrato.codclie = 1)
GROUP BY contrato.numecont
HAVING (SUM(det_contrato.preven * contrato.tiempo) - SUM(pago.montopag) > 0)
__________________
Cuando las cosa son Buenas, SON BUENAS! no importan las R@tas que orinen en el camino! Me SiGUe!!
  #4 (permalink)  
Antiguo 16/08/2006, 07:28
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
ok, no habia visto la tabla Pago.
----------------------------------
y si agrupas tambien por idpag?

GROUP BY contrato.numecont, pago.idpag
  #5 (permalink)  
Antiguo 17/08/2006, 15:53
Avatar de julwo  
Fecha de Ingreso: mayo-2004
Ubicación: santiago, Rep Dom
Mensajes: 252
Antigüedad: 20 años
Puntos: 0
no ya probe con eso tampoco funca na decidi k voy a guardar el monto total en el contrato y a ese monto le voy a restar los pagos asi si funca pero es ek el profe no lo queria a asi
__________________
Cuando las cosa son Buenas, SON BUENAS! no importan las R@tas que orinen en el camino! Me SiGUe!!
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 18:47.