Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   2 Consultas Dependientes (https://www.clubdelphi.com/foros/showthread.php?t=55232)

mjjj 10-04-2008 22:06:27

2 Consultas Dependientes
 
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:

Código Delphi [-]
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

Código SQL [-]
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...


Código Delphi [-]
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...

Código Delphi [-]
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

Código Delphi [-]
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...

Código Delphi [-]
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:
Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 20:48:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi