Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-01-2012
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Unhappy Consulta para agrupar por "conocidos"

Buenas tardes a todos, estoy intentando realizar una consulta para saber la coincidencia de "conocidos" entre varias personas que tienen registrado a sus clientes por el numero telefonico.

Basicamente son varias agendas que tiene cada uno de los vendedores pero las tienen por separado y lo que quiere el supervisor es saber cuantos de los vendedores tienen el mismo contacto, por ejemplo:

Código:
VENDEDOR-1	VENDEDOR-2	VENDEDOR-3
JUAN            ANA             ADRIANA
PEDRO		CARLOS		PEDRO
MARIA		HECTOR		JOSE
LUIS		PEDRO		ALFONSO
CARLOS		JOSE	        KARLA
Por el momento cada vendedor tiene su agenda en excel por separado, mi idea es meter la agenda que solo contiene NOMBRE TELEFONO DIRECCION, en una base de datos MySQL pero no se si asignarle una Tabla a cada vendedor (20 por el momento) o crear una sola y agregarle un campo que sea VENDEDOR para poder meterlos todos en la misma y procesar los datos desde ahi.

Lo que intentare hacer es hacer una consulta que me diga que vendedores tienen un mismo cliente, basados en el numero telefonico, no en el nombre, como en el ejemplo que les puse burdamente quedaria asi lo que quiero hacer

Código:
VENDEDOR-1	VENDEDOR-2	VENDEDOR-3
PEDRO		PEDRO		PEDRO
CARLOS		CARLOS

VENDEDOR-2	VENDEDOR-3
JOSE            JOSE
Asi que que me recomiendan mas, tablas separadas y comparar, aunque supongo que algun pero habra, o mejor meter todo en una sola y procesarlos desde ahi que creo seria lo mejor, pero lo que quiero que me diga es que vendedores comparten clientes y ahi si es donde estoy pensando sobre todo cuando sean mas de 2.

Se agradece toda ayuda y sugerencia
Responder Con Cita
  #2  
Antiguo 22-01-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tabla vendedor:
ID-Vendedor, nombre, etc, etc, id-contanto1, d-contanto2, d-contanto3, d-contanto4,
Tabla Contantos
Id-contanto, nombre, dirccion, telefono.

Buscas por id-contacto, suponiendo que cada vendedor puede coincidir con 4 contactos.
Bueno, es una manera de hacerlo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 22-01-2012
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Muchas gracias

Hola Caral Muchas Gracias por tu Respuesta

Entonces por lo que veo me recomiendas que haga dos tablas una donde incluya a los vendedores y otra que incluya a los contactos y que cree una id para cada contacto y los jale para consulta.

Si es correcto el unico detalle es que me pasaron un listado y ya me explico mi conocido que quiere el programita bien y ya le entendi mejor jajaja lo que pasa es que le pasan un detalle de llamadas realizadas por cada linea

Código:
Vendedor-1     Vendedor-2     Vendedor-3
555-1234        555-1234        555-4539
555-4321        555-7539        555-1234
555-3421        555-6987        555-5812
555-6987                        555-6987
Se lo entregan en una hoja de excel con la siguiente estructura

Código:
Telefono-Origen     Telefono-Destino     Duracion-Llamada     Etc
(El Vendedor)        (Un Cliente)       (Lo que duro)      (Otras cosas que no necesita)
Como es venta de productos un mismo vendedor puede llamar varias veces a un mismo numero, eso lo tengo hecho de la siguiente manera

Código Delphi [-]
procedure TForm1.LlamadasDestinosClick(Sender: TObject);
  with Query1 do begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT TELEFONO-DESTINO,COUNT(Tel-Destino) AS Total-Llamadas FROM XLS-Llamadas GROUP BY Tel-Destino ORDER BY Total-Llamadas DESC');
      Open;
  end;
  with DBGrid1 do begin        // Pon el datasource del DBGrid en las propiedades, en este caso DataSource2
      Columns[0].FieldName:='TELEFONO DESTINO';
      Columns[1].FieldName:='TOTAL LLAMADAS';
  end;
end;

Por tanto ya despues de ver eso de las hojas de excel lo que se me ocurre es solo importarlas, como la estructura nunca cambia asi evito que se meta todo a mano.

Osea que la base me quedo al final de la siguiente manera

Código:
TABLA
id.Vendedor (Es el numero del cual sale la llamada osea su linea telefonica, TELEFONO-ORIGEN)
id.Contacto (Es el numero que recibe la llamada, TELEFONO-DESTINO)
id.Duracion  (Es el tiempo que duro la llamada)
Basicamente es lo unico que requiere la base.

Osea que lo que quiere saber el administrador, es lo siguiente:

1.- Cuantas llamadas realizo cada vendedor (Es no hay problema, selecciono los registros comprendidos entre rango de fecha y los cuento, de cada vendedor)

2.- Si entre vendedores han llamado a un mismo numero, es decir que numeros telefonicos coinciden en que fueron llamados entre vendedores pudiendo ser solo 2 vendedores o mas, aqui es donde no se me ocurre como hacer la consulta

Última edición por erikmx fecha: 22-01-2012 a las 20:48:39. Razón: Error de dedo :)
Responder Con Cita
  #4  
Antiguo 24-01-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Hola. Y si utilizas cuatro tablas para hacer el registro de datos?

Vendedor
Id
Apellido
Nombre
etc

Contacto
Id
Apellido
Telefono
Etc

Vinculo
Id
IdVendedor
IdContacto

Registro
IdVinculo
FechaLlamada
Duracion
Etc

De ahí puedes registrar en vinculo la relación entre los vendedores y los contactos y por este vinculo hacer el correspondiente registro y posterior consulta de las llamadas.. No se. mucho no analice la estructura pero es como sale a veces... EXPONTANEO!!! saludos
Responder Con Cita
  #5  
Antiguo 24-01-2012
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Gracias

Saludos MartinS, Pues hacer una tabla con los vendedores una de clientes y otra de las llamadas como que no me cuadra habria que ver los pros y los contras

Lo que tambien estaba pensando es si meto a cada linea telefonica con sus numeros, en una tabla, para que pueda compararlos con otras tablas, solo que no se me ocurre como hacer la sentencia para comparar entre dos tablas, y asi cartar en un ComboBox La linea del vendedor que me interesa y en otra Combobox el listado de las demas lineas y decirle a la consulta que me muestre los numeros telefonicos que se repitan en la linea seleccionada en funcion de la linea que seleccione como principal

Alguna sugerencia?
Responder Con Cita
  #6  
Antiguo 24-01-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Te pasan el vendedor (numero tel), el Cliente (numero tel), el tiempo.
Tienes que hacer:

Una tabla con los vendedores, con el IDvendedor (numero tel) y los otros datos del vendedor.
Otra tabla con los clientes con el IDcliente (numero tel) y los datos que quieras.
Otra tabla reporte, idvendedor, idcliente, tiempo, etc.

Guardas la informacion en la tabla reporte.
Seleccionas los datos segun idvendedor, idcliente y te envia todo lo demas

Simple, tres tablas cruzadas.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 24-01-2012 a las 22:28:21.
Responder Con Cita
  #7  
Antiguo 24-01-2012
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Saludos Caral

Bueno creo que igual y yo los estoy haciendo bolas ya que no es tan simple, o por lo menos yo no lo veo asi

Me van a pasar un listado que voy a importar a base MySQL el cual contiene los siguientes datos

Código:
TELEFONO-ORIGEN     TELEFONO-DESTINO      FECHA     DURACION
(EL VENDEDOR)       (# TEL CLIENTE)       (:D)     (CUANTO DURO)
COMO TAL SOLO TENGO NUMEROS, PERO CON EL NUMERO DEL VENDEDOR SE A QUIENES LLAMO EN UN PERIODO DE TIEMPO

VOY A VOLVER A METER CADA REGISTROS O LISTADOS DE UN VENDEDOR EN UNA TABLA POR SEPARADO

Código:
VENDEDOR1        VENDEDOR2        VENDEDOR...
111111111111     222222222222     3333333333333
222222222222     333333333333     4444444444444
LO QUE QUIERO SABER ES DEL LISTADO DEL VENDEDOR1, SI EN EL LISTADO DEL VENDEDOR2 O 3 O EL QUE SEA, TAMBIEN EXISTE EL MISMO NUMERO EL LISTADO, O QUE ME MUESTRE CUALES SE REPITEN PERO EN OTRA TABLA SEGUN EL VENDEDOR.

LA ESTRUCTURA DE CADA TABLA QUEDARIA ASI SIN IMPORTAR EL VENDEDOR, CADA UNA QUEDA:

Código:
TELEFONO-ORIGEN, TELEFONO-DESTINO, FECHA, DURACION
SE ME ESTAN RECORRIENDO ALGUNAS CHAPUZAS COMO RECORRER CADA REGISTRO UNA TABLA, Y COMPARARLA CON LA DE OTRA QUE SELECCIONA Y SI EL CONTENIDO ES IGUAL QUE ME LO AGREGE A UN LISTVIEW PERO PUES LO VEO MUY TARDADO PORQUE SERIA 1X1 DE CADA UNO POR 1X1 DE CADA OTRO LISTADO.
Responder Con Cita
  #8  
Antiguo 24-01-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Como dije, simple:
tres tablas
1- vendedor, por que?, para tener lod datos del vendedor, incluso le pondria un campo activo SI/NO.
2- cliente, por que? lo mismo que el anterior.
3- Reporte, en esta colocas TODO lo que te envian, sin modificar nada.
Simple, cruzas las tres.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 24-01-2012
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Talking :)

Cita:
Empezado por Caral Ver Mensaje
Hola
Como dije, simple:
tres tablas
1- vendedor, por que?, para tener lod datos del vendedor, incluso le pondria un campo activo SI/NO.
2- cliente, por que? lo mismo que el anterior.
3- Reporte, en esta colocas TODO lo que te envian, sin modificar nada.
Simple, cruzas las tres.
Saludos

Oooo gracias, mmm solo que no se me ocurre como seria una consulta cruzada de esta forma? lo haria en funcion de los numeros que ya tengo en un listado supongo?

Aunque igual y lo podria a reducir a 2 ya que el Vendedor tiene su directorio con sus numeros y en la otra meteria el listado que me manden aunque este revuelto, como ya se cual es el numero de origen ( el numero telefonico del vendedor ) lo unico que veria es como hacer para que me muestre que clientes a llamado ( sin importar el numero de veces ) que se repitan entre vendedore.

Voy a ver si puedo hacerle por ahi alguna consulta para ejemplificar con algun WIZARD
Responder Con Cita
  #10  
Antiguo 24-01-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No es que insista pero necesitas tres tablas, por que?.
1-Como sabes a quien pertenece un numero determinado, puede ser de alguien que no sea ni siquiera cliente ?.
2-Como cruzas información para saber cliente/vendedor/tiempo ?
3-Tener y actualizar una lista de vendedores es sencillo, asi como de clientes.
Te aseguro que hoy te piden un simple listado, mañana te pedirán mas especificaciones, mejor hacer las cosas una sola vez.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 24-01-2012
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Ok no habia pensado en ello, si te entendi bien debo de crear una tabla que me indique que empelados tengo con sus datos personales nada mas con su respectivo ID, la otra un listado con el directorio de todos los vendedores enlazados a su ID de vendedor para saber a que vendedor pertenece el cliente, y por ultimo del listado que voy a importar hacer una consulta entre las tres, ok hasta y si no me equivoque me parece muy bien.

Si me perdi porfavor mencionamelo

Ahora voy a ver como hago mi consulta para que resulte
Responder Con Cita
  #12  
Antiguo 24-01-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es sencillo
tres tablas
1- vendedores: idV, tel, nombre, activo, etc.
2- clientes: idC (tel del cliente), nombre, lugar, activo, etc.
3- reporte, (el que te envian): IdV (vendedor), IdC (tel Cliente), fecha, tiempo.

Consulta por id del vendedor y la fecha, simple solo de la tabla reporte:

Código SQL [-]
Select * form reporte where idV = :dato and fecha >= :fecha1 and fecha <= :fecha2.

Si quieres puedes hacer otras consultas que te envien tambien el nombre del vendedor, tendras que usar un join en la consulta para ligar las dos tablas.

Saludos
__________________
Siempre Novato
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
"Me Gusta", "Compartir", "Gracias" movorack La Taberna 4 24-10-2010 14:45:59
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
Comentario "aplastante" contra los que atacan la "piratería" Casimiro Notevi La Taberna 12 07-03-2010 14:03:02
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 13:48:26.


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