PDA

Ver la Versión Completa : 2 Consultas Dependientes


mjjj
10-04-2008, 22:06:27
Hola, tengo un problemita que no se como solucionarlo... aer si me ayudan.

Quiero mostrar en un TDbGrid dos campos distintos. El problema es que la informacion del segundo campo depende de la primera... ufff, mejor expongop un ejemplo.

He estado pensando un un codigo que pudiese funcionar, va algo asi:


select distinct area, (select sum(monto) from presupuesto where empresa='empresa1' AND AREA LIKE 'AREA1(DEPENDE DE LA PRIMERA CONSULTA)' AND PERIODO='periodo1')
AS SUBTOTAL) FROM ESTRUCTURA WHERE EMPRESA ='empresa'


No se si podra hacer esto, ni si me explique bien

Espero me puedan ayudar.

Saludos

ContraVeneno
10-04-2008, 23:00:00
Select E.Area, Sum(P.Monto) as Monto
From Estructura E
Join Presupuesto P on E.Empresa = P.Empresa and E.Area = P.Area and E.Periodo = P.Periodo
where E.Empresa = 'Empresa'
Group By E.Area

mjjj
10-04-2008, 23:47:03
Lo acomode segun mis requerimientos, pero no me arroja los resultados que necesito... es decir, me arroja todas las distintas area, pero el suma la suma de da valores que no corresponden...



Select E.Area, Sum(P.Monto) as Monto
From Estructura E
Join Presupuesto P on P.Empresa = E.Empresa and P.Area = E.Area AND P.PERIODO = '2008-03'
where E.Empresa = 'MAT'
Group By E.Area


Haber si se les ocurre como lo soluciono...


gracias

mjjj
11-04-2008, 18:53:52
No se que ocurre... pero esto no funcione que es debido o a lo mejor es que no se puede hacer.

Espongo el codigo...


Select e.Area AREA, SUM(p.Monto) Monto
From Estructura E, Presupuesto P
where e.Area = p.Area AND P.PERIODO = '2008-03'
and e.Empresa = 'LUZ' and P.empresa = 'LUZ'
Group By E.Area


El resultado de la primera parte de la consulta es...

area1
area2
area3
area4

En la segunda parte (la suma de los montos) necesito que me sume todos los montos en relacionados con el area correspondiente, es decir, por ejemplo para el area1, area2, area3 y area4.

En conclusion la segunda parte de la consulta depende de los resultados de la primera parte....

Esto se puede hacer??

Espero que me puedan ayudar... Saludos

mjjj
12-04-2008, 00:28:08
Parece que no se me entiende... lo expongo de otra manera.

Se puede hacer una consulta con las respuesta de otra consulta???

Lo que yo hago ahora es lo siguiente. Realizo una consulta la que me entrega un listado de registros, que los guardo en un listbox con el siguiente codigo


ibquery1.sql.add('select distinct area from estructura')

listbox1.clear;
while not ibquery1.eof do
begin
listbox1.items.add(ibquery1.fieldbyname('area').asstrinG);
ibquery1.next;
end;


La cantidad de registros del listbox puede ser de hasta unos 20 registros.
luego realizo otra consulta en donde hago la suma...


for I:=0 to listbox1.Items.Count-1 do
begin
IBQUERY2.Close;
IBQUERY2.SQL.CLEAR;
IBQUERY2.SQL.ADD('SELECT MONTO FROM PRESUPUESTO');
IBQUERY2.SQL.ADD('WHERE EMPRESA ='+QUOTEDSTR('MAT'));
ibquery2.SQL.add('AND area ='+quotedstr(listbox1.Items[I]));

IBQUERY2.Open;

if ibquery2.IsEmpty = FALSE then
while not ibquery2.eof do
BEGIN
MONTO:=MONTO+IBQUERY2.FieldByName('MONTO').ASFLOAT;
IBQUERY2.NEXT;
end;
END;



Esto funciona bien, pero LEEEENTO... porque debe hacer muchas consultas.

Es posible realizar esto mismo en una sola consulta??

Espero que me puedan ayudar.... muchas gracias

Saludos

Lepe
12-04-2008, 11:05:07
Así de memoria yo diría:

select empresa, area, sum(monto)
from presupuestos
where empresa = :emp
group by empresa, area

y el resultado sería la suma de cada área de la misma empresa. Habría tantos registros como áreas.

Saludos

mjjj
16-04-2008, 00:33:52
Gracias Lepe, con tu ayude pude solucionar en parte mi problema.

Ahora bien, una ultima pregunta....

Se puede hacer una consulta con las respuesta de otra consulta, todo dentro de una misma consulta???

Es semejante a las pregunta anterior, pero sabiendo esto puedo mejorar muchisimo mi aplicacion.

Espero se entienda mi consulta, y me puedan dar una respuesta, ya se de que si se puede o no.

Gracias