Ver Mensaje Individual
  #11 (permalink)  
Antiguo 23/04/2008, 01:39
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Re: Se pueden vincular 2 tablas en diferentes bases de datos en un query?

Cita:
Iniciado por gokufast Ver Mensaje
Si hay coincidencias!!!

La cuestion es esta:
- En la base Saldos en la tabla voluntario tengo un dato que es vol_cod=187, con saldo 100.

- En la base UFV en la tabla voluntario tengo un dato que es vol_cod=187, con saldo 550.

Quiere decir que tengo el mismo vol_cod en 2 lugares, pero con distintos saldos, osea el mismo socio tiene 2 cuentas. y en ambas cuentas cumple con la condicion que ser mayor a 2796 y mayor a 500.

En las coincidencias me salen todos esos socios que tienen 2 cuentas y que cumplen con las 2 condiciones y son 227 socios.

Ahora como hago puedo hacer lo siguiente?

Que solo me salga todos los socios que cumplen por lo menos una de las condiciones ( es por eso el cambio del AND por OR en saldo_us >= 500 AND saldo_ufv >= 2796 no?).
Y que ademas no me salgan los duplicados osea que el socio 187 que menciono antes solo me salga una vez, por una de sus cuentas no por ambas.

Espero haber sido claro, a veces me hago bolas explicando
Lo rojo es nuevo, si quieres que cumplan una u otra condicion luego tendras que poner OR no AND.

Tienes claro que con "saldo_us >= 500 AND saldo_ufv >= 279" el socio 187 que mencionas no va a aparecer nunca puesto que NO cumple las dos condiciones.

Con "saldo_us >= 500 OR saldo_ufv >= 279" apareceria puesto que cumple una de las dos.

Pero con el join de los dos querrys que te proponia gnzsoloyo cambiando AND por OR tampoco saldria por que luego no se cumpliria la condicion del INNER JOIN puesto estaria en el resultado de una subconsulta y no en la otra.

Código:
SELECT 
  	ufv.voluntario.vol_cod,
  	SUM(ifnull(ufv.voluntario.vol_depus, 0) - ifnull(ufv.voluntario.vol_retus, 0)) AS saldo_ufv,
  	SUM(ifnull(saldos.voluntario.vol_depus, 0) - ifnull(saldos.voluntario.vol_retus, 0)) AS saldo_us
FROM
  	ufv.voluntario INNER JOIN saldos.voluntario 
                        ON ufv.voluntario.vol_cod = saldos.voluntario.vol_cod
GROUP BY
  	ufv.voluntario.vol_cod, 
HAVING
  	saldo_ufv >= 2796 OR
	saldo_us >= 500
Asi deberia salir, pero tambien te dará la info de la cuenta que no cumple puesto que ahora esta en el mismo registro, con el JOIN lo que estamos haciendo es juntar registro con registro. No te saldra duplicado pero te saldra la info de las dos cuentas en el mismo registro...

Quim