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

[SOLUCIONADO] Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports)

Estas en el tema de Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports) en el foro de Bases de Datos General en Foros del Web. Buenas tardes, si pudieran auxiliarme de que manera podría realizar la suma del resultado de una consulta con otro dato (parametro dado) pero en la ...
  #1 (permalink)  
Antiguo 05/01/2016, 22:11
 
Fecha de Ingreso: abril-2013
Mensajes: 7
Antigüedad: 11 años
Puntos: 0
Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports)

Buenas tardes, si pudieran auxiliarme de que manera podría realizar la suma del resultado de una consulta con otro dato (parametro dado) pero en la misma consulta. No se si sea posible a travez de JOIN, soy novato. He intentado varias maneras pero no logro obtener el resultado que deseo.

Estas son las Tablas ejemplo:



Ocupo obtener 5 datos que serán para mostrar en un JasperReports (Java), ocupo generar una consulta para generar el reporte pero no logro hallar la forma de obtener todos los datos necesarios, es para generar un reporte mensual.

LOS DATOS QUE OCUPO:

Ingreso Total =
SELECT SUM(ingresoxDia) AS Total_Ingresos FROM caja WHERE YEAR(fechaAbrir)='2015' AND MONTH(fechaAbrir)='12';

Gastos General =
SELECT SUM(cantidad) AS GastosGeneral FROM gastos WHERE YEAR(fechaEgreso)='2015' AND MONTH(fechaEgreso)='12' AND categoria<>'RETIRO DE EFECTIVO' AND categoria<>'SERVICIOS';

Gastos Servicios =
SELECT IFNULL(SUM(cantidad),0) AS GastosServicios FROM pagoservicios WHERE YEAR(fecha)='2015' AND MONTH(fecha)='12';

Total Gastos = Gastos General - Gastos Servicios

TOTAL NETO DEL MES = Ingreso Total - Total Gastos

Opte por mandar Gastos General, Gastos Servicios y Total Gastos ya generados a través del código java y pasar solo los resultados como parámetros al JasperReport y la consulta del mismo.

Pero no logro como realizar la resta de Total Gastos en mi consulta de Ingreso Total para también obtener ahí el Total Neto del Mes.

Saludos Cordiales.
  #2 (permalink)  
Antiguo 07/01/2016, 13:36
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports)

Y si pruebas con Procedimientos almacenados?? es mucho más eficiente y rápido que estar calculando los datos 1 a 1 y después volver a enviarlos.
  #3 (permalink)  
Antiguo 07/01/2016, 15:34
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports)

Todo depende del ingenio...

Dos soluciones posibles:
Código MySQL:
Ver original
  1.     SUM(total) NetoMes
  2.     (SELECT
  3.         SUM(ingresoxDia) total
  4.     FROM
  5.         caja
  6.     WHERE
  7.         YEAR(fechaAbrir) = 2015
  8.             AND MONTH(fechaAbrir) = 12
  9.         SUM(cantidad) * - 1 total
  10.     FROM
  11.         gastos
  12.     WHERE
  13.         YEAR(fechaEgreso) = 2015
  14.             AND MONTH(fechaEgreso) = 12
  15.             AND categoria <> 'RETIRO DE EFECTIVO'
  16.             AND categoria <> 'SERVICIOS'
  17.     SELECT
  18.         IFNULL(SUM(cantidad), 0) * - 1 total
  19.     FROM
  20.         pagoservicios
  21.     WHERE
  22.         YEAR(fecha) = 2015 AND MONTH(fecha) = 12) saldos;

Código MySQL:
Ver original
  1.     IngresoMes,
  2.     GastosMes,
  3.     PagosMes,
  4.     (IngresoMes - GastosMes - PagosMes) SaldoMes
  5.     (SELECT
  6.         SUM(ingresoxDia) IngresoMes
  7.     FROM
  8.         caja
  9.     WHERE
  10.         YEAR(fechaAbrir) = 2015
  11.             AND MONTH(fechaAbrir) = 12) Ingreso
  12.         JOIN
  13.     (SELECT
  14.         SUM(cantidad) GastosMes
  15.     FROM
  16.         gastos
  17.     WHERE
  18.         YEAR(fechaEgreso) = 2015
  19.             AND MONTH(fechaEgreso) = 12
  20.             AND categoria <> 'RETIRO DE EFECTIVO'
  21.             AND categoria <> 'SERVICIOS') Gastos
  22.         JOIN
  23.     (SELECT
  24.         IFNULL(SUM(cantidad), 0) PagosMes
  25.     FROM
  26.         pagoservicios
  27.     WHERE
  28.         YEAR(fecha) = 2015 AND MONTH(fecha) = 12) Pagos
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 07/01/2016, 22:06
 
Fecha de Ingreso: abril-2013
Mensajes: 7
Antigüedad: 11 años
Puntos: 0
Respuesta: Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports)

Muchas gracias a los dos compañeros, no estoy muy familiarizado con los JOIN y UNION ALL aun, no los había manejado de esa manera, voy aprendiendo sobre la marcha. Tampoco conocía acerca del tema de Procedimientos Almacenados de mysql, es muy interesante ya estoy leyendo sobre eso y probando:

Código SQL:
Ver original
  1. CREATE PROCEDURE total(IN año INT, IN mes INT, OUT suma INT)
  2. BEGIN
  3. SELECT SUM(ingresoxdia) FROM caja WHERE YEAR(fecha_abrir)=2015 AND
  4. MONTH(fechat_abrir)=12 INTO suma;
  5. END
Muchas gracias, tampoco se me había pasado por la mente lo de la ley de los signos. Gracias por el apoyo y su respuesta.

Saludos Cordiales.

Última edición por gnzsoloyo; 08/01/2016 a las 09:51
  #5 (permalink)  
Antiguo 08/01/2016, 06:19
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Sumar ResultadoConsulta con Otro Dato. (Mysql+JavaNetbeans+JasperReports)

En el procedimiento mas que pasar variables puedes ir almacenando en variables los resultados de
Ingreso Total
Gastos General
Gastos Servicios

Y después solo haces la resta de esas variables y las retornas

Total Gastos = Gastos General - Gastos Servicios
TOTAL NETO DEL MES = Ingreso Total - Total Gastos

Etiquetas: jasperreport, java, mysql, netbeans
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 19:05.