Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta de artículos venididos en un día (https://www.clubdelphi.com/foros/showthread.php?t=78941)

jfrancho 28-05-2012 14:00:25

consulta de artículos venididos en un día
 
Buen día, lo que necesito hacer es una consulta la cual me permita obtener los artículos vendidos en un día.lo que hago es lo siguiente:selecciono un rango de fecha, desde/hasta y me devuelve todos los registro vendidos desde que se implementó el sistema, y no es lo que necesito; estoy trabajando en delphi 7 y access ya que es una aplicación monousuario.
Realizo la consulta sobre las tabla facturas que contiene los siguientes campos, nrofactura, fecha, total, tipo_fac y la tabla detalles, que contiene los siguientes campos, id_det, descripcion, subtotal, cantidad, nrofactura.
el sql es este:
Código SQL [-]
SELECT SUM(cantidad),  descripcion
FROM Tdetalles
where exists (SELECT nrofactura, fecha
FROM Tfacturas where fecha between  :vfec1 and :vfec2)
group by descripcion.
desde ya muchas gracias.Saludos

Casimiro Notevi 28-05-2012 15:12:54

Código SQL [-]
select det.descripcion, det.cantidad
from tabladetalles det
inner join tablafacturas fac on fac.nrofactura=det.nrofactura
where fac.fecha between :fec1 and fec2
¿Para qué sirve id_det?


Por cierto, recuerda poner los tags al código fuente, ejemplo:


jfrancho 28-05-2012 16:00:51

Muchas gracias por la respuesta, lo voy a provar.
El id_det, es un campo autoincremental.Saludos

jfrancho 28-05-2012 20:53:20

Me funcionó a medias el código, porque necesito saber que cantidad de determinado articulo vendí en un día x, y el código anterior me da los articulos pero se repiten en la consulta, yo los quiero agrupar.
intenté hacer lo siguiente

Código SQL [-]
select det.descripcion, sum(det.cantidad)
from tdetalles det
inner join tfacturas fac on fac.nrofactura=det.nrofactura
where fac.fecha between :vfec1 and :vfec2
group by det.descripcion

pero me da este error, EdatabaseError ADdetalle field cantidad no found. ADdetalle es el nombre del query.
Saludos.-

Casimiro Notevi 28-05-2012 22:53:06

Pues así, a simple vista, parece correcto.
No sé si access tiene alguna sintaxis particular.

olbeup 29-05-2012 08:14:45

Hola jfrancho,

Lo que te está diciendo el error "pero me da este error, EdatabaseError ADdetalle field cantidad no found. ADdetalle es el nombre del query.", es que el campo cantidad no existe en la base de datos tdetalles, haber si el campo es de tfacturas

Un saludo.

Casimiro Notevi 29-05-2012 10:15:25

Sí, el error es claramente que no existe ese campo, pero según lo indicado por el usuario es así, por lo que no vale la pena pensar nada más ni perder el tiempo hasta que lo aclare él mismo :)

jfrancho 29-05-2012 13:50:55

Buen día: el campo cantidad me funciona perfectamente si hago la consulta de esta manera

Código SQL [-]
select det.descripcion, det.cantidad
from tdetalles det
inner join tfacturas fac on fac.nrofactura=det.nrofactura
where fac.fecha between :vfec1 and :vfec2

pero si agrego esto, me da error, la verdad me mató:

Código SQL [-]
select det.descripcion, sum(det.cantidad)
from tdetalles det
inner join tfacturas fac on fac.nrofactura=det.nrofactura
where fac.fecha between :vfec1 and :vfec2
group by det.descripcion

Saludos y Gracias por su respuesta.

Casimiro Notevi 29-05-2012 15:25:14

Pues echa un vistazo a la documentación de access, a ver si tiene alguna sintaxis especial para las agrupaciones.

jfrancho 31-05-2012 16:16:46

Bueno después de tanto pelear con la consulta sql(debe ser que se apiadó de mí) logré mi cometido
quedó así:

Código SQL [-]
select b.descripcion, sum(b.cantidad)
from tfacturas a inner join tdetalles b 
on a.nrofactura=b.nrofactura
where a.fecha between :vfec1 and :vfec2
group by b.descripcion

mi pregunta es: será que me daba error porque primero nombraba la tabla detalles y no la maestro????
me da la información de los articulos vendidos en un periodo de tiempo.Saludos y gracias por su respuestas


La franja horaria es GMT +2. Ahora son las 20:19: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