anidar selects

Carlos Corona
22 de Octubre del 2008
Hola a todos!! quisiera hacerles una consulta. Quero realizar la suma de ingresos y egresos que están almacenados en dos tablas, la suma es por día.... entonces mi idea era hacer algo así:

para cada dia{
SELECT sum(monto) FROM ingresos WHERE fecha='dia';
}
Ya tengo el ciclo del día, pero como tambien quiero los egresos, tendria que agregar otra consulta así:
para cada día{
SELECT sum(monto) FROM ingresos WHERE fecha='dia';
SELECT sum(monto) FROM egresos WHERE fecha='dia';
}

ahora, yo lo que no quiero es tener 2 consultas diferentes a la bd... me conviene más para lo que estoy haciendo que sea una sola... por lo que quería una sentencia que me quedara así:

para cada dia{
SELECT sum(monto) AS ing FROM ingresos WHERE fecha='dia' ALGOQUEUNASELECTS SELECT sum(monto) AS egr FROM egresos WHERE fecha='dia';
}

Es posible?? Ode que otra manera se pueden tener 2 columnas de dos tablas a la vez?

Porque lo primero que intenté fué:

para cada dia{
SELECT sum(ingresos.monto) AS ing,sum(egresos.monto) FROM ingresos,egresos WHERE fecha='dia';
}

Pero como ambas tablas tienen fecha, lo especifiqué así:

para cada dia{
SELECT sum(ingresos.monto) AS ing,sum(egresos.monto) FROM ingresos,egresos WHERE ingresos.fecha='dia' OR egresos.fecha='dia';
}

Sin embargo, al hacer eso, si la fecha dada no existe para alguna de las 2 tablas (que puede darse el caso) entonces el valor que me arroja es completamente erroneo (ni idea de donde sale) Entonces, me gustaría saber si alguien me puede hachera una mano, se los agradecería mucho.

Carlos Corona
22 de Octubre del 2008
De nuevo: yo pregunto, yo respondo... jajajaja

Bueno, para los que se quedaran intrigados o aquellos en el mismo dilema que yo (que lo dudo) la respuesta es tan clara como el agua:

para cada dia{
SELECT sum(monto) AS ing,(SELECT sum(monto) FROM egresos WHERE fecha='dia') AS egr FROM ingresos WHERE fecha='dia';
}

Simple no?? Jejeje, quizas no sea la mejor forma, pero funciona y eso me basta, jejeje.

Leonardo
22 de Octubre del 2008
Pues yo tenía el mismo problema y en verdad tu solucion funciona, felicitaciones!!!