SQL - consulta

   
Vista:

consulta

Publicado por Eduardo00 (6 intervenciones) el 17/02/2012 13:32:17
Hola a todos:
Me gustaria saber si me pueden ayudar con una consulta sql .

Explico: tengo 4 tablas , socios, vales, cuotasvales y pedidos

tabla socio :Rut, nombre, ap_patero, Ap materno, ...
tabla vales: id_vale,id_empresa,monto,saldo,fecha...
tabla cuotasvales: idvale,saldo,mes,anio......
tabla pedidos: id_pedidos,rut,monto,saldo,fecha....

lo que necesito que me dvuelva es lo siguiente:


Rut------------Nombre--------Empresa---------Saldo
11111-1------Eduardo--------Calzado----------50000
11111-1------Eduardo--------Ropa-------------60000
22222-2------Raul------------calzado----------100000
22222-2------Raul------------Ropa-------------120000

Que es la suma de los vales de cada socio , de cada empresa , en un determinado mes Enero, Febrero,Marzo e incluso tengo que agregar el año

Deje la consulta de la siguiente manera pero me aprece igual:

select rut,nombre,nombempr ,ap_pat, saldo, sum(SumaDesaldo) as saldo from (SELECT socios.rut, socios.nombre, socios.ap_pat, socios.ap_mat, vales.id_vale, cuotas.saldo, empresa.nombempr, cuotas.monto, Sum(cuotas.saldo) AS SumaDesaldo
FROM socios INNER JOIN vales ON socios.rut = vales.rut, cuotas INNER JOIN empresa ON cuotas.id_empresa = empresa.id_empresa
GROUP BY socios.rut, socios.nombre, socios.ap_pat, socios.ap_mat, vales.id_vale, cuotas.saldo, cuotas.monto, empresa.nombempr, cuotas.mes, cuotas.anio
HAVING (((cuotas.saldo)>"0") AND ((cuotas.mes)="Enero") AND ((cuotas.anio)="2012") ) ) t1 group by rut,nombre,nombempr ,ap_pat, saldo;

esta consulta me duvuelve lo siguiente


Rut------------Nombre--------Empresa---------Expr1004---------Saldo
11111-1------Eduardo--------Calzado----------200000--------200000
11111-1------Eduardo--------Ropa-------------240000---------240000
22222-2------Raul------------calzado----------400000----------400000
22222-2------Raul------------Ropa-------------480000----------480000

me suma los saldos 4 veces y me aprece un campo Expr1004

Gracias de ante mano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

consulta

Publicado por leonardo_josue (877 intervenciones) el 17/02/2012 16:13:39
Hola Eduardo00:

Es conveniente que también pongas qué datos tienes en cada tabla, para poder replicar el escenario con el que estés trabajando.

A simple vista, el problema es que se está realizando un producto cartesiano entre tus tablas, checa la parte del FROM de tu consulta:

1
2
3
FROM [b]socios
INNER JOIN vales ON socios.rut = vales.rut[/b],
 cuotas INNER JOIN empresa ON cuotas.id_empresa = empresa.id_empresa


Estás mezclando dos formas de unir consultas, por un lado en la parte negrita y en la parte subrayada estás utilizando JOIN's, pero estas secciones las separas por una COMA, por lo tanto estás indicando que realice un producto cartesiano entre ellas, te recuerdo que hay dos maneras de unir tablas:

CON COMAS:

1
FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo


Aquí, si no se ponen las condiciones de unión en el WHERE se hace un producto cartesiano (Qué es tu caso)

CON JOIN'S

1
FROM tabla1 INNER JOIN  tabla2 ON tabla1.campo = tabla2.campo.


Revisa bien tus relaciones.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar