Ver Mensaje Individual
  #28 (permalink)  
Antiguo 27/01/2012, 11:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta MYSQL INNER JOIN

Cita:
CHEQUE son los ingresos que hay en una empresa osea que otras empresas giran por trabajos realizados.
ABONO son los pagos a terceros ejemplo pago a cualquier persona por servicios
Esencialmente estás intentando hacer un balance de caja...
El tema en ese caso pasa porque no existe en realidad una relación entre ambos porque se trata de operaciones completamente independientes. Son entidades diferentes.
Acá, para resolverlo deberías crear en lugar de esa entidad "Mes" una entidad que llames, por ejemplo, "MovimientoCaja", y relaciones Cheque ("Caja_Cheque") y Abono ("Caja_Egreso") con ella, de modo que hereden la clave (relación 1:N en una jerarquia).
De ese modo tendrías todos los movimientos de caja registrados en una tabla, y los tipos de movimiento en cada una de las otras (a la que se pueden ir agregando otras según el tipo de entrada o egreso que se trate).
En ese contexto, si quieres el listado completo sería:
Código MySQL:
Ver original
  1.     MC.movimiento_id,
  2.     MC.fecha,
  3.     IFNULL(CE.importe, 0.0) Egreso,
  4.     IFNULL(CC.importe, 0.0) Ingreso
  5.     movimiento_caja MC
  6.     LEFT JOIN CajaEgreso CE ON MC.movimiento_id = CE.movimiento_id
  7.     LEFT JOIN CajaCheque CC ON MC.movimiento_id = CC.movimiento_id
  8.     MC.movimiento_id

Si quieres además una sumatoria con subtotales:
Código MySQL:
Ver original
  1.     MC.movimiento_id,
  2.     MC.fecha,
  3.     IFNULL(CE.importe, 0.0) Egreso,
  4.     IFNULL(CC.importe, 0.0) Ingreso,
  5.     SUM(CE.importe) TotalEgreso,
  6.     SUM(CC.importe) TotalIngreso
  7.     movimiento_caja MC
  8.     LEFT JOIN CajaEgreso CE ON MC.movimiento_id = CE.movimiento_id
  9.     LEFT JOIN CajaCheque CC ON MC.movimiento_id = CC.movimiento_id
  10.     MC.movimiento_id,
  11.     MC.fecha,
  12.     CE.importe Egreso,
  13.     CC.importe Ingreso  WITH ROLLUP;

No te olvides que para que este esquema funcione las tablas CajaCheque y CajaEgreso que te indico no deben tener clave propia, sino que heredan la clave de MovimientoCaja.
Si no entiendes bien esta idea te sugiero empezar leyendo algo de fundamentos del modelo Entidad - Relación y su aplicación a las bases de datos, cosa que puedes encontrar en Wikipedia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)