Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como generar esto? (https://www.clubdelphi.com/foros/showthread.php?t=8768)

nefy 01-04-2004 03:53:43

Como generar esto?
 
Hola a todos tengo el siguiente problema y la verdad no soy muy experto para SQL pero quiero ver si alguno conoce la manera de solucionar esto. Tratare de ser lo mas claro posible. Ahi va:
Debo de Generar un Reporte concentrado de Ventas por Poblacion. Para ello existe una tabla de poblaciones con los siguientes campos:
Poblacion, NumClientes, TotalVentas, PorcentajeVentas, Unidade Vendidas.Y aparte existen tres tablas para generar los resultados. Una tabla es de clientes en ella esta un campo clave llamado NUM_CLI y demas campos para guardar sus datos personales. La otra tabla (CONTRATOS.DB) Tiene un campo NUMCONTRATO y NUM_CLI para crear una relacion q me permitiera crear campos LookUp en el IDE de Delphi para no redundar en la informacion de las dos tablas asi q solo construi algunos campos lookup para visualizar los datos del cliente en cada uno de los contratos relacionando ambas tablas con el campo NUM_CLI existente en ambas tablas pero sin existir esa informacion fisicamente en la tabla de contratos. Aparte la tercer tabla contiene los movimientos de cada uno de los contratos, para esto existe una relacion Master/Detail con el campo NUMCONTRATO ya q en un solo contrato se pueden comprar mas de un articulo.
Hasta aqui todo bien pero ahora el problema es q debo de generar un reporte q me diga cuantos articulos vendi por cada municipio asi como el total de las ventas. El problema es q no puedo filtrar la tabla de contratos por Municipio ya q no existe en la tabla pues solo es un campo lookup que visualiza los datos del cliente q esta registrado en la otra tabla (CLIENTES).
Se q es algo confuso :confused: :confused: pero les agradeceria me dieran guia de como solucionar esto. Si en algo no fui claro pues digan y tratare de esclarecerlo.
Gracias de antemano.

jachguate 01-04-2004 05:22:54

Hola Nefy. Hubiese sido mejor que pusieras las tablas y sus campos en una lista, y no es esta forma, que se hace realmente dificil de leer.

Te recomiendo la lectura de un buen libro o tutorial de SQL, antes de enfrentar asuntos como este.

Yo he entendido esto:

Código:

Poblaciones
==========
Poblacion
Nombre
Otros_estadisticos

Cliente
============
id_Cliente
Nombre
Poblacion
Otros_campos

Contrato
============
id_Contrato
id_cliente
Otros_campos

Detalle_contrato
============
id_Contrato
Linea
cantidad
Valor_Total

Debes hacer un join de las cuatro tablas, y agrupar por población:

algo como:

Código:

Select p.nombre, sum(dc.cod_articulo), sum(dc.valor_total)
  from Poblacion p
      inner join cliente c on p.poblacion = c.poblacion
      inner join contrato ct on ct.id_cliente = c.id_cliente
      inner join detalle_contrato dc on dc.id_contrato = ct.id_contrato
 group by p.nombre;

Hasta luego.

;)

nefy 02-04-2004 17:34:46

Ya lo logre y lo hice asi:
1.-Cronstrui una consulta de un municipio en àrticular pero utilizando
una variable de texto para crear la consulta como un procedimiento y solo
utilizar un ciclo para asignar el nombre de cada municipio q esta en la
tabla de municipios. La consulta es la siguiente:
SELECT DISTINCT Contratos.NCONTRATO, Contratos.VENDEDOR, Contratos.TOTAL,
Contratos.OBSERVACIONES, Contratos.NUM, Contratos.FECHA, Clientes.RAZON_SOCIAL,
Clientes.CONTRIBUYENTE, Clientes.GIRO, Clientes.RFC, Clientes.CALLE_NUM,
Clientes.COLONIA, Clientes.MUNICIPIO, Clientes.CP, Clientes.CLASIFICACION,
Clientes.FONO1, Clientes.FAX, Clientes.CORREO, Clientes.TRATO, Clientes.NOMBRE,
Clientes.APELLIDOS
FROM "c:\dtc\dbdtc\ventas\Contratos.DB" Contratos
INNER JOIN "c:\dtc\dbdtc\ventas\Clientes.DB" Clientes
ON (Contratos.NUM_CLI = Clientes.NUM_CLI)
INNER JOIN "c:\dtc\dbdtc\ventas\Cont_mov.DB" Cont_mov
ON (Cont_mov.NCONTRATO = Contratos.NCONTRATO)
WHERE Clientes.MUNICIPIO = '+QuotedStr(Municipio);

Ya con esta consulta solo hice un recordcount para saber el numero de contratos
y una suma del campo Total de la tabla Contratos a fin de saber el total de ventas
de dicho municipio.
Para sacar el numero de articulos vendidos solo hice un join entre contratos y
Mov_Contratos para recorrer la tabla de contratos y ir contando el numero de
movimientos o articulos vedidos en dicho contrato.

Pues ya estuvo gracias y si alguien tiene una duda de como lo hice pues
pregunte.

Gracias Jachguate.


La franja horaria es GMT +2. Ahora son las 22:28:01.

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