PDA

Ver la Versión Completa : Consulta sobre 2 tablas


mjjj
01-05-2008, 01:26:29
Area si alguien me puede ayudar un poquito con una consulta SQL.


Select p.Area, Sum(p.Monto) as Monto, sum(c.monto_compr) as Total from presupuesto p, compras c
where p.Empresa = c.empresa and c.empresa = 'empresa1'
and p.periodo = c.periodo and c.periodo = '2008-04'
GROUP BY AREA


No me tira ningun error, pero no me da los valores que necesito.

Lo que necesito que me entregue es una lista de todas las area de la empresa, con su respectiva suma de presupuesto (monto) y la suma de las compras (monto.compr), en un determinado periodo.

Tengo 2 tablas, que se pueden relacionar por el campo AREA, PERIODO y EMPRESA.

Espero me puedan ayudar

BlueSteel
01-05-2008, 03:38:54
Area si alguien me puede ayudar un poquito con una consulta SQL.


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
Select p.Area, Sum(p.Monto) as Monto, sum(c.monto_compr) as Total from presupuesto p, compras c
where p.Empresa = c.empresa and c.empresa = 'empresa1'
and p.periodo = c.periodo and c.periodo = '2008-04'
GROUP BY AREA





No me tira ningun error, pero no me da los valores que necesito.

Lo que necesito que me entregue es una lista de todas las area de la empresa, con su respectiva suma de presupuesto (monto) y la suma de las compras (monto.compr), en un determinado periodo.

Tengo 2 tablas, que se pueden relacionar por el campo AREA, PERIODO y EMPRESA.

Espero me puedan ayudar

Intenta con esto


Select p.Area, Sum(p.Monto) as Monto, sum(c.monto_compr) as Total
from presupuesto p, compras c
where p.Empresa = c.empresa and c.empresa = 'empresa1'
and c.periodo = '2008-04'
GROUP BY AREA


esta condicion estaba sobrando
p.periodo = c.periodo

Salu2:p:D

alexey1982
01-05-2008, 05:18:22
oigan amigos :confused:, tachenme de inmunda rata ignorante :eek: pero.. me podrian explicar que significa ese dato: la "P" y la "C" es el nombre de la tabla o es alguna convencion de sql.. O_O' (por que ya lo habia visto antes en el curso sql para pollos, que estoy tomando pero en el mendigo libro no explican eso....!!:mad:)
un saludo...:D

BlueSteel
01-05-2008, 05:31:15
oigan amigos :confused:, tachenme de inmunda rata ignorante :eek: pero.. me podrian explicar que significa ese dato: la "P" y la "C" es el nombre de la tabla o es alguna convencion de sql.. O_O' (por que ya lo habia visto antes en el curso sql para pollos, que estoy tomando pero en el mendigo libro no explican eso....!!:mad:)
un saludo...:D


Hola

mira si te fijas en la sentencia SQL
Select p.Area, Sum(p.Monto) as Monto, sum(c.monto_compr) as Total
from presupuesto p, compras c
where p.Empresa = c.empresa and c.empresa = 'empresa1'
and c.periodo = '2008-04'
GROUP BY AREA


tiene declarado presupuesto p

esto quiere decir que presupuesto se pasará a llamar p...

es como si se pusiera presupuesto as p, lo mismo pasa con compras c, en donde la Tabla compras se llamará c (pero en la sentencia que se esta ejecutando...)

esto evita el poner el nombre largo y repetirlo en todos los campos..

espero que hayas entendido

Salu2:p:D

alexey1982
01-05-2008, 06:02:35
anda amigo steel, si es cierto!! gracias por explicarme!! (que aunque parece muy simple me has despejado de una duda de varios dias haha!! un saludo!)

mjjj
01-05-2008, 19:04:24
hola Bluesteel.

Hice lo que me recomendaste, pero esto sigue sin funcionar. Voy a exponer mas detalladamente mi problema.

Tengo 2 tablas, con los siguientes campos:

Tabla 1 (Presupuesto): empresa, area, subarea, periodo, monto....
Tabla 2 (Compras):empresa, area, periodo, monto_compr...

Ejemplo de lo datos de la tabla 1 (Presupuesto):

empresa area subarea periodo monto
empresa1 area1 subarea2 2008-04 1.500
empresa1 area2 subarea2 2008-05 4.000
empresa2 area3 subarea1 2008-03 3.500
empresa2 area1 subarea2 2008-04 7.000
empresa1 area2 subarea3 2008-05 10.000

Ejemplo de lo datos de la tabla 2 (Compras):

empresa area periodo monto_compr
empresa1 area1 2008-04 3.000
empresa1 area2 2008-05 9.000
empresa2 area3 2008-03 15.500
empresa2 area1 2008-04 7.000
empresa1 area2 2008-05 10.000

Esto es lo que ocurre, la tabla 1, presenta los presupuestos asignados alguna area, periodo y empresa en particular, es decir, para la empresa1, area1, subarea2, periodo 2008-04 tiene un monto de 1.500.

En la tabla 2, se presentan un listado de todas las compra de cierta empresa.
Cada compra esta catalogada dentro de cierta area y periodo, y obviamente tiene cierto monto (monto_compr)

Finalmente lo que necesito realizar:

Necesito una consulta que me entregue en tres campos: el area, el presupuesto acumulado (suma), y compras acumuladas (suma), en cierto periodo y empresa en particular.

Por ahora lo que hago es hacerlo por separado, en dos consultas distintas y funciona bien, pero me gustaria obtener esta misma informacion en una sola consulta.

Lo estoy haciendo asi:

Select p.Area, Sum(p.Monto_compr) as Monto
from compras p
where p.empresa = 'empresa1'
and p.periodo = '2008-04'
GROUP BY AREA


Select p.Area, Sum(p.monto) as Presupuesto
from presupuesto
where p.empresa = 'empresa1'
and p.periodo = '2008-04'
GROUP BY AREA


Esto funciona, pero quisiera ver si alguien me puede ayudar para realizar una sola consulta... y asi ahorrar tiempo.

Saludos, gracias.

jcarteagaf
02-05-2008, 04:25:03
A ver si esto te sirve:

SELECT P.Area,
Sum(p.Monto) as Monto,
sum(c.monto_compr) as Total
FROM presupuesto p
JOIN compras c ON (P.Empresa = c.Empresa and P.Periodo=c.Periodo)
WHERE
P.empresa = 'empresa1'
P.periodo = '2008-04'
GROUP BY P.AREA
ORDER BY P.Area

Saludos

mjjj
04-05-2008, 20:34:30
Hola... esta cosa no funciona.

alguna modificacion al codigo SQL:

SELECT P.Area, Sum(p.Monto) as Monto, sum(c.monto_compr) as TotalFROM presupuesto pJOIN compras c ON (P.Empresa = 'empresa1' and c.periodo='2008-04')WHERE P.empresa = 'empresa1' P.periodo = '2008-04'GROUP BY P.AREAORDER BY P.Area

el tema es que no existe relacion entre las tablas, por lo que no puedo hacer una condicion como c.periodo = p.periodo.... yo creo que por ahi va la solucion, pero no logro encontrarla.

como dijo anteriormente si hago la consulta por separado esto va de maravilla, el problema surge al tratar de obtener la misma informacion en una sola consulta.

lo que necesito es obtener un listado de las distintas areas de la empresa, donde me muestre el presupuesto de estas distintas area y la suma de las compras de estas mismas area.... algo asi:

area presupuesto compras
area1 5.000 1.000
area2 7.000 5.000
area3 9.000 0
area4 3.000 3.000

no se si esto se podra con la forma que estructure mis tablas.... alguna idea del codigo SQL

Saludos... Gracias

mjjj
07-05-2008, 14:42:56
Parece que esta medio complicado esto... yo no he podido resolverlo... ojala que alguien se le ocurriera algo y me lo dijera....

me seria de grana ayuda.

Saludos, gracias.