Delphi - Consulta SQL

 
Vista:

Consulta SQL

Publicado por Sirjhan Betancourt (7 intervenciones) el 29/07/2008 07:03:16
Buenas Tardes a todos...

En primer lugar doy gracias de ante mano

Resulta que tengo tres Tablas de las cuales quiero hacer una consulta que me genere un inventario de movimientos, Las tablas son las Siguientes y los Campos para el Sql generado.

Tabla (Producto)
CodProd - Articulo - Unidad - Existencia - Val_Entrada - Val_Salida - Grupo - Sub_Grupo - Inv_Inicial

Tabla (CompraProd)
NumF - CodProd - Fecha - Cantidad - Valor - Descuento

Tabla (VentaProd)
NumF - CodProd - Fecha - Cantidad - Valor - Descuento

Consulta generada, Bueno esos son los datos que quiero que salgan

Cod Articulo InvInicial Can Entra Val Ent V T Ent Can Sal Val TS Exi Cant Val Exi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Consulta SQL

Publicado por E.T. (1244 intervenciones) el 29/07/2008 17:46:13
Es algo relativamente sencillo

select p.CodProd, p.Articulo, p.invInicial, sum(c.cantidad)as cant_compra,sum(v.cantidad)as cant_venta
from productos p LEFT JOIN compraprod c ON p.CodProd = c.codProd
LEFT JOIN ventaprod v ON p.CodProd = v.codProd
group by p.CodProd, p.Articulo, p.invInicial

Con esto te regresa la sumua de articulos que has vendido y comprado, acompañado por su codigo, descripción e inventario inicial, si deseas poner más campos de la tabla, sólo agregalos en la parte de SELECT, y tambien ponlos en la de group by (si no los pones aqui, te amrcará error)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por Sirjhan Betancourt (7 intervenciones) el 29/07/2008 19:15:37
Hola ET Primero que todo gracias por responderme, La consulta que me diste va muy bien pero me esta trayendo un solo registro y es el de compra, y necesito tanto de compra y ventas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Consulta SQL

Publicado por E.T. (1244 intervenciones) el 29/07/2008 20:00:29
No se que suceda, a mi me funciona bien

select p.CodProd, p.Articulo, p.invInicial, sum(c.cantidad)as cant_compra,sum(v.cantidad)as cant_venta
from productos p LEFT JOIN compraprod c ON p.CodProd = c.codProd
LEFT JOIN ventaprod v ON p.CodProd = v.codProd
group by p.CodProd, p.Articulo, p.invInicial

sum(v.cantidad)as cant_venta
esta linea de la consulta es la que te debe de traer las ventas

Como que un registro? a mi me regresa todos mis artículos si importar si se han vendido o no, ni si se han comprado o no, solo me regresa null en los campos sumados si no hay venta o compra, agregaste campos??, pruebala primero como te la mandé para ver si alguna modificación que hayas hecho no la ejecute como debe de ser
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por Sirjhan Betancourt (7 intervenciones) el 29/07/2008 20:32:23
Hola ET
tengo problemas con el Sum hice este cambio y no me realiza el sum

select p.CodProd, p.Articulo, p.invInicial,c.Cantidad,sum(c.Cantidad*p.V_Entrada)as cant_compra,sum(v.Cantidad)as cant_venta
from Producto p LEFT JOIN CompraProd c ON p.CodProd = c.CodProd
LEFT JOIN VentaProd v ON p.CodProd = v.CodProd
group by p.CodProd, p.Articulo, p.InvInicial,p.V_Entrada,c.Cantidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Consulta SQL

Publicado por E.T. (1244 intervenciones) el 29/07/2008 20:43:04
Te sobra un campo en el group By

group by p.CodProd, p.Articulo, p.InvInicial,p.V_Entrada,c.Cantidad

debe ser así:

group by p.CodProd, p.Articulo, p.InvInicial,c.Cantidad

En que estás probando las consultas? desde el manejador de base de datos o desde delphi?
Te muestra algun error, si es así, que te dice el error

En el group by, se ponen los campos que está dentro del SELECT pero que no estan dentro de campos que son parte de una función, por ejemplo "sum", si quieres agregar además el campo p.V_Entrada, tendría que ser así:

select p.CodProd, p.Articulo, p.invInicial,c.Cantidad,p.V_Entrada,
sum(c.Cantidad*p.V_Entrada)as cant_compra,sum(v.Cantidad)as cant_venta
from Producto p LEFT JOIN CompraProd c ON p.CodProd = c.CodProd
LEFT JOIN VentaProd v ON p.CodProd = v.CodProd
group by p.CodProd, p.Articulo, p.InvInicial,p.V_Entrada,c.Cantidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL

Publicado por Sirjhan Betancourt (7 intervenciones) el 29/07/2008 21:34:03
Hola ET que pena con usted con tantas preguntas, el Sql lo estoy generando desde SQl Explorer de Delphi 7, la consulta me sale bien con los campos si se realizaron compras o ventas o ninguna de las anteriores.
Lo que no me hace es el Sum bien ya que si hago 2 compras o ventas a un mismo articulo este me lo muestra ambos y no me hace el sum.

select p.CodProd, p.Articulo, p.invInicial,Sum(c.Cantidad)as Cantidad_Entrada,p.V_Entrada,sum(c.Cantidad*p.V_Entrada)as Valor_Compra,sum(v.Cantidad)as Cantidad_Salida,P.V_Salida Precio_Salida,sum(v.Cantidad*v.Precio)as Valor_Venta,p.Cantidad Existencia,Sum(p.InvInicial*p.V_Entrada)as Total_Valor
from Producto p LEFT JOIN CompraProd c ON p.CodProd = c.CodProd
LEFT JOIN VentaProd v ON p.CodProd = v.CodProd
group by p.CodProd, p.Articulo, p.InvInicial,p.V_Entrada,p.V_Salida,c.Cantidad,C.Precio,v.Precio,v.Cantidad,p.Cantidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar