Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta en 2 Tablas Master/Detail (https://www.clubdelphi.com/foros/showthread.php?t=96670)

Ferrari 10-04-2024 20:21:44

Consulta en 2 Tablas Master/Detail
 
Hola compañeros del club...tengo un problema con una consulta entre 2 tablas master-detail para un reporte de ventas por articulo, les explico brevemente:
(D7-SQL)
Tengo dos tablas la primera es:
Articulos(tabla_master) Que tiene estos campos:
=================
NoArt (Primary key)
Descripcion
status

Y la segunda es:
Ventas (tabla_detalle) que tiene estos campos:
=================
NoArt
FechaVta
Cant_Venta
Existencia_anterior
Saldo

Ahora bien mi problema consiste en que la tabla detalle pueden existir N numero de ventas de un mismo producto con diferentes fechas en un mismo mes...me estan pidiendo cual es la ultima venta de ese mes para cada uno de los articulos para saber el Saldo final de ese producto :confused:

Ejemplo como debería quedar dicha consulta al final:

Código Delphi [-]
Articulo   Descripcion        Saldo    Fecha
========   ==========         =====    =====  
012345    JERINGA                5    2024-01-25
012346    TAPON                  2    2024-01-30  
012347    SONDA                  3    2024-01-19


Agradezco mucho sus consejos y aportaciones asi como su valioso tiempo a cada uno de ustedes...saludos desde México

javipes 11-04-2024 12:28:02

No sé cómo lo estas haciendo, ni las tablas en que base de datos están, ...
pero yo crearía un ClientDataSet con las columnas a sacar en el informe (y quiza alguna más auxliar) y simplemente se crea el informe a partir de los registros del dataset.
para rellenar el dataset, imagino que podras hacer uso de un componente TQuery o similar y lo que realmente necesitas es la sentencia SQL que te permite extraer las ventas del ultimo mes, extrayendo para cada artículo sólo la ultima venta. Segun la base de datos la sintaxis puede variar, pero supongo que algo así te serviría (ejemplo firebird)
Código:

select
    V.noart as articulo,
    a.descripcion,
    v.saldo,
    v.fechavta as fecha
from ventas v
join articulos a on a.noart=v.noart
where v.fechavta= (select max(v2.fechavta) from ventas v2 where v2.noart=v.noart)
order by v.noart


javipes 11-04-2024 12:31:29

ojo, en el ejemplo anterior no estoy sacando el mes indicado, solo la ultima venta.
SI lo que quieres es afinar y que los datos sean de un mes en concreto solo habría que ampliar la clausula where para que la fecha estuviera entre el pimer dia y el ultimo del mes a considerar , ambos inclusive, pero bueno es añadir condiciones


La franja horaria es GMT +2. Ahora son las 17:58:27.

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