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 01-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Unhappy 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 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.
Responder Con Cita
  #2  
Antiguo 01-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 02-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
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.
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


La franja horaria es GMT +2. Ahora son las 07:44:13.


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