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 19-11-2008
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Consulta SQL con 3 tablas y sub-ordenamiento

Estimados, no se si lo que necesito hacer se puede mediante una sentencia SQL, no me queda claro la verdad, si alguien tiene alguna idea le agradeceria me comentara algo al respecto..... el tema es el siguiente.....
tengo 3 tablas
tabla STOCK : campos producto,subproducto,stock
esta tabla mantiene el stock de n productos.
tabla INGRESO: campos ticket,producto,subproducto,pesoneto
esta tabla almacena los movimientos de ingresos de los productos.
tabla EGRESO: campos ticket,producto,subproducto,pesoneto
esta tabla almacena los movimientos de egresos de los productos.

Entonces mi duda apunta a lo siguiente: Es posible realizar una consulta que me muestre el stock y sus respectivos movimientos de ingreso y egreso... osea algo asi...

producto,subproducto
XXXXX,YYYYYY
ingresos,peso
1 100
2 100
3 200
egresos,peso
4 100
5 50
6 50
Y que este resultado lo pueda mostrar en un grid o un informe impreso....
Estoy trabajando en Delphi 2006 con una base de datos ACCESS.
Ojala alguien sepa por donde va la cosa por que no se que hacer a este respecto... saludos a todos.
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #2  
Antiguo 19-11-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Código SQL [-]
 
      Select  Stock.Producto, Stock.SubProducto, 
                  isnull(Ingresos.Cuantos,0) As Ingresos, isnull(Ingresos.Peso,0) As PesoIngreso,
                  isnull(Egresos.Cuantos,0) As Egresos, isnull(Egresos.Peso,0) As PesoEgreso 
        From Stock As Stock
  Left Join  (
                        Select Producto, Subproducto, Count(*) Cuantos, Sum(PesoNeto) Peso
                          From Ingreso
                   Group By Producto, Subproducto
                  ) Ingresos
            On Stock.Producto = Ingresos.Producto And
                  Stock.SubProducto = Ingresos.SubProducto
  Left Join  (
                        Select Producto, Subproducto, Count(*) Cuantos, Sum(PesoNeto) Peso
                          From Egreso
                   Group By Producto, Subproducto
                  ) Egresos
            On Stock.Producto = Egresos.Producto And
                  Stock.SubProducto = Egresos.SubProducto
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 19-11-2008
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
voy a probar esto.... creo que no habia visto consulta sql tan compleja ....... gracias... luego comento....
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #4  
Antiguo 19-11-2008
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Simplifique un poco la sintaxis para entender mejor, pero la version completa y esta version que puse me dan error de sintaxis.....

Código SQL [-]
Select  Stock.Producto, Stock.SubPro,stock.stock
From Stock 
  Left Join  ( Select Producto, Subpro From Ingreso  )
                Ingreso  On Stock.Producto = Ingreso.cliente And Stock.SubPro = Ingresos.SubPro
  Left Join  (Select Producto, Subpro From Egreso )
                Egreso On Stock.Producto = Egreso.Producto And Stock.SubPro = Egreso.SubPro
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #5  
Antiguo 19-11-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Olvidé que usas access, prueba esto:

Código SQL [-]
 
   Select Datos.Producto, Datos.Subproducto, 
            Datos.Ingresos, Datos.PesoIngreso,
            Egresos.Cuantos As Egresos, Egresos.Peso As PesoEgreso 
   From (
              Select  Stock.Producto, Stock.SubProducto, 
                        Ingresos.Cuantos As Ingresos, Ingresos.Peso As PesoIngreso
                 From Stock As Stock
            Left Join  (
                                Select Producto, Subproducto, Count(*) Cuantos, Sum(PesoNeto) Peso
                                  From Ingreso
                             Group By Producto, Subproducto
                         ) Ingresos
                    On Stock.Producto = Ingresos.Producto And
                        Stock.SubProducto = Ingresos.SubProducto
          ) Datos
Left Join  (
                  Select Producto, Subproducto, Count(*) Cuantos, Sum(PesoNeto) Peso
                    From Egreso
               Group By Producto, Subproducto
             ) Egresos
        On Datos.Producto = Egresos.Producto And
            Datos.SubProducto = Egresos.SubProducto


El error que te lanza es por que access no soporta dos joins en un select, debes usar subquerys.

Saludos
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 19-11-2008 a las 20:38:18. Razón: sintaxis
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
Ordenamiento de Consulta MaMu SQL 6 28-07-2008 17:44:34
consulta de dos tablas. digital SQL 4 06-11-2007 20:41:00
Consulta SQL con dos tablas... emeceuy Conexión con bases de datos 2 06-08-2005 07:41:59
consulta de dos tablas tgsistemas SQL 4 15-04-2005 13:25:59
Ordenamiento GIVO Conexión con bases de datos 4 13-08-2003 18:19:29


La franja horaria es GMT +2. Ahora son las 05:54:29.


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