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

Sumatoria de dos columnas del resultado de unir 3 tablas

Estas en el tema de Sumatoria de dos columnas del resultado de unir 3 tablas en el foro de Mysql en Foros del Web. Hola, tengo las siguientes 3 tablas con los siguientes datos: Código: DEPOSITOS --------------------- cantidad | moneda ---------------------- 1000 1 2000 2 2000 1 500 2 ...
  #1 (permalink)  
Antiguo 18/12/2006, 17:20
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Sumatoria de dos columnas del resultado de unir 3 tablas

Hola,

tengo las siguientes 3 tablas con los siguientes datos:

Código:
DEPOSITOS
---------------------
cantidad | moneda
----------------------
  1000      1
  2000      2
  2000      1
   500      2
----------------------


EXTRACCIONES
---------------------
cantidad | moneda
----------------------
   500      1
  1000      2
   500      1
   500      2
----------------------

MONEDAS
---------------------
   id  | nombre
----------------------
    1    pesos
    2    euros
----------------------
y necesito una consulta que me devuela la sumatoria de la canitdad de depositos y la sumatoria de la cantidad de extracciones agrupadas por moneda.
osea:

Código:
RESULTADO
-----------------------------------
 depositado | extraido  | moneda
-----------------------------------
  3000         1000        pesos
  2500         1500        euros   
-----------------------------------
Yo llegue a la siguiente consulta:

Código:
SELECT 
SUM(d.cantidad) AS depositado, SUM(e.cantidad) AS extraido, m.nombre 
FROM depositos d 
LEFT JOIN extracciones e ON e.moneda = d.moneda 
LEFT JOIN monedas m ON d.moneda = m.idmoneda 
GROUP BY d.moneda
Que me devuelve el numero correcto de "extraido" y la "moneda" pero me suma nuevamente la sumatoria de "depositado" X veces como registros de extracciones haya en esa moneda (en este caso, al haber dos extraccxiones de cada moneda me devuelve el doble de la sumatoria... 6000 pesos y 5000 euros).

La verdad es que SQL no es mi fuerte, asi que me doy por vencido y acudo a los que realmente saben, para ver si alguien me da una mano con esto que no parecia tan complicado al principio...

Saludos
__________________
oohh... quisiera ser godines!!!

Última edición por safe; 18/12/2006 a las 17:21 Razón: Cambio de titulo
  #2 (permalink)  
Antiguo 19/12/2006, 01:55
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Sumatoria de dos columnas del resultado de unir 3 tablas

Creo que te devuelve el doble porque agrupas solamente por el campo moneda la tabla depositos, creo que deberías agrupasr tanto por d.moneda como por e.moneda algo como esto.

Código:
SELECT 
SUM(d.cantidad) AS depositado, SUM(e.cantidad) AS extraido, m.nombre 
FROM depositos d 
LEFT JOIN extracciones e ON e.moneda = d.moneda 
LEFT JOIN monedas m ON d.moneda = m.idmoneda 
GROUP BY d.moneda,e.moneda
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #3 (permalink)  
Antiguo 19/12/2006, 11:50
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Re: Sumatoria de dos columnas del resultado de unir 3 tablas

hola Lord,

La verdad es que tu respuesta sonaba logica. Pero me sigue dando el mismo problema.
Me parece que voy a tener que hacerlo con 2 consultas nomas.
Saludos
__________________
oohh... quisiera ser godines!!!
  #4 (permalink)  
Antiguo 19/12/2006, 12:03
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Sumatoria de dos columnas del resultado de unir 3 tablas

Lo miré y creo que comparas equivocademente las tablas ocn el LEFT JOIN ya que es moneda la que se cruza tanto con depositos como con extracciones lo corregí así mira a ver si va:

Código:
SELECT 
SUM(d.cantidad) AS depositado, SUM(e.cantidad) AS extraido, m.nombre 
FROM  monedas m
LEFT JOIN extracciones e ON e.moneda = d.moneda 
LEFT JOIN depositos d ON d.moneda = m.moneda 
GROUP BY d.moneda,e.moneda
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #5 (permalink)  
Antiguo 19/12/2006, 22:51
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Re: Sumatoria de dos columnas del resultado de unir 3 tablas

hola,

Tuve que cambiar el orden de los left join y lo que esta en negrita para que no me de error...

Código:
SELECT 
SUM(d.cantidad) AS depositado, SUM(e.cantidad) AS extraido, m.nombre 
FROM  monedas m
LEFT JOIN depositos d ON d.moneda = m.idmoneda 
LEFT JOIN extracciones e ON e.moneda = d.moneda 
GROUP BY d.moneda,e.moneda
de todas formas, el resultado sigue dando el mismo problema. ¿vos pensas que realmente puedo a llegart a sacarlo con una sola consulta?
__________________
oohh... quisiera ser godines!!!
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 05:01.