Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 10-04-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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
__________________

Responder Con Cita
  #3  
Antiguo 10-04-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 11-04-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 12-04-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 12-04-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 16-04-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
datagrid dependientes voldemmor OOP 4 21-02-2008 18:18:30
Ordenar elementos de consulta, tablas dependientes Mannu C++ Builder 6 02-10-2007 18:29:13
Combos dependientes Caray HTML, Javascript y otros 8 07-03-2007 17:02:27
Consultas SQL V.S. Consultas Clipper AGAG4 SQL 7 20-12-2005 15:59:31
Consultas NickName Firebird e Interbase 1 27-11-2003 05:37:27


La franja horaria es GMT +2. Ahora son las 09:20:04.


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
Copyright 1996-2007 Club Delphi