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 01-05-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Consulta sobre 2 tablas

Area si alguien me puede ayudar un poquito con una consulta SQL.

Código Delphi [-]
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
Responder Con Cita
  #2  
Antiguo 01-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por mjjj Ver Mensaje
Area si alguien me puede ayudar un poquito con una consulta SQL.


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

Código 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

esta condicion estaba sobrando
Código SQL [-]
p.periodo = c.periodo

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 01-05-2008
Avatar de alexey1982
alexey1982 alexey1982 is offline
Miembro
 
Registrado: abr 2008
Ubicación: mezzico
Posts: 15
Poder: 0
alexey1982 Va por buen camino
pregunta

oigan amigos , tachenme de inmunda rata ignorante 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....!!)
un saludo...
Responder Con Cita
  #4  
Antiguo 01-05-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por alexey1982 Ver Mensaje
oigan amigos , tachenme de inmunda rata ignorante 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....!!)
un saludo...

Hola

mira si te fijas en la sentencia SQL
Código 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
Código SQL [-]
presupuesto p

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

es como si se pusiera
Código SQL [-]
presupuesto as p
, lo mismo pasa con
Código SQL [-]
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
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 01-05-2008
Avatar de alexey1982
alexey1982 alexey1982 is offline
Miembro
 
Registrado: abr 2008
Ubicación: mezzico
Posts: 15
Poder: 0
alexey1982 Va por buen camino
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!)
Responder Con Cita
  #6  
Antiguo 01-05-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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:
Código SQL [-]
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.
Responder Con Cita
  #7  
Antiguo 02-05-2008
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
A ver si esto te sirve:

Código SQL [-]
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
Responder Con Cita
  #8  
Antiguo 04-05-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Hola... esta cosa no funciona.

alguna modificacion al codigo SQL:
Código 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
Responder Con Cita
  #9  
Antiguo 07-05-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
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.
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
Consulta con 4 tablas Caral Varios 7 17-10-2007 02:34:03
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta sobre tablas y DBLookupCombobox silviodp Conexión con bases de datos 6 29-11-2006 03:14:02
Consulta SQL con dos tablas... emeceuy Conexión con bases de datos 2 06-08-2005 07:41:59
Consulta SQL con 4 tablas nefy SQL 2 03-05-2004 23:25:22


La franja horaria es GMT +2. Ahora son las 11:25:53.


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