Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Consulta para agrupar por "conocidos" (https://www.clubdelphi.com/foros/showthread.php?t=77401)

erikmx 22-01-2012 04:01:06

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 :D

Caral 22-01-2012 15:06:35

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

erikmx 22-01-2012 20:47:19

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 :(

MartinS 24-01-2012 11:56:59

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!!! :D saludos

erikmx 24-01-2012 20:28:01

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

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?

Caral 24-01-2012 22:23:04

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

erikmx 24-01-2012 22:36:03

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.

Caral 24-01-2012 22:40:42

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

erikmx 24-01-2012 22:45:43

:)
 
Cita:

Empezado por Caral (Mensaje 423643)
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 :D

Caral 24-01-2012 22:55:53

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

erikmx 24-01-2012 22:59:34

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 :D

Ahora voy a ver como hago mi consulta para que resulte :confused:

Caral 24-01-2012 23:08:13

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


La franja horaria es GMT +2. Ahora son las 06:10:35.

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