Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

telefonos repetidos.

Estas en el tema de telefonos repetidos. en el foro de Mysql en Foros del Web. Hola tengo una tabla con 4 campos tel1, telefonos_repetidos, tel2, telefonos_repetidos2 necesito hacer una o dos consultas que revise telefono por telefono tanto en tel1 ...
  #1 (permalink)  
Antiguo 26/03/2010, 12:10
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
telefonos repetidos.

Hola
tengo una tabla con 4 campos

tel1, telefonos_repetidos, tel2, telefonos_repetidos2



necesito hacer una o dos consultas que revise telefono por telefono tanto en tel1 como en tel2 y coloque la cantidad de telefonos repetidos en telefonos_repetidos

y luego a la inversa es decir, en tel2 y luego en tel1 y coloque ese conteo en telefonos_repetidos2

pongo un ejemplo

tel1
654123
987774
654123


tel2
456789
654123

en este ejemplo en:
telefonos_repetidos
654123 = 2
987774 = 0

__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 27/03/2010, 05:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: telefonos repetidos.

Lexus,
yo necesitaría algo más de información, pues no acabo de entender exactamente lo que quieres sacar.
*con los teléfonos repetidos en telefonosrepetidos te refieres a las repeticiones sumando las coincidencias entre tel1 y tel2, pero descontando 1 de ellos. Es decir, si aparece un teléfono en tel1 4 veces y una vez más en tel2, debería aparecer no 5, sino 4. Y en caso de telefonos_repetidos2, los que apareciendo en tel2 pueden o no aparecer en tel1, siempre quitando 1 al resultado de sumar todos ellos. Pon algunos datos más.
En el ejemplo que has puesto, 654123 aparece dos veces en tel1 y una en tel2, y quieres que salga 2 y no 3, que es el número de apariciones entre las dos tablas. Y 98774 aparece una vez en tel1 y ninguna en tel2, de ahí el cero. Ponnos un par de ejemplos más, y otro par de ellos con los datos que se carguen en telefonos_repetidos2, y ofrécenos aclaraciones de cada uno de ellos.

saludos
  #3 (permalink)  
Antiguo 29/03/2010, 08:43
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: telefonos repetidos.

si tienes razon me equivoque en lo de las repeticiones
no hay que descontar 1 de ellos

en telefonos_repetidos iria la cantidad de apariciones de tel1 y tel2
en telefonos_repetidos2 iria la cantidad de apariciones de tel2 y tel1
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #4 (permalink)  
Antiguo 29/03/2010, 14:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: telefonos repetidos.

Desde el lado de tel1 y para telefonos_repetidos, así:
SELECT t1.tel1, IFNULL((t1.total+t2.total2),0)veces FROM (select tel1, count(tel1) total FROM tabla GROUP BY tel1)t1 LEFT JOIN
(select tel2, COUNT(tel2) total2 FROM tabla GROUP BY tel2)t2 ON t1.tel1 = t2.tel2

Para el otro lado bastaría con cambiar el cruce...
  #5 (permalink)  
Antiguo 05/04/2010, 08:12
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: telefonos repetidos.

ok muchas gracias si asi me funciona bien..
aunque necesito colocar ese resultado del conteo de tel1 y tel2 en el campo telefonos_repetidos y el conteo de tel2 y tel1 en telefonos_repetidos2
por medio de un UPDATE
como podria hacerlo de forma eficiente?
gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #6 (permalink)  
Antiguo 05/04/2010, 08:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: telefonos repetidos.

desde el lado de tel1, esto me ha funcionado,aunque no sé si será eficiente.
update tabla T5 INNER JOIN ((SELECT t1.tel1, IFNULL((t1.total+t2.total2),0)veces FROM (select tel1, count(tel1) total FROM tabla GROUP BY tel1)t1 LEFT JOIN
(select tel2, COUNT(tel2) total2 FROM tabla GROUP BY tel2)t2 ON t1.tel1 = t2.tel2))t4 on T5.tel1 = t4.tel1 set T5.telefonos_repetidos = t4.veces

Si te parece que es lento, carga los datos en una tabla de paso y luego haz el update cruzando con esa tabla.
  #7 (permalink)  
Antiguo 05/04/2010, 08:47
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: telefonos repetidos.

ya lo hice muchas gracias..
para el telefonos_Repetidos2. solo seria cambiar los tel1 por tel2 y visceversa?


lo hice asi sera que esta bien?



Código MySQL:
Ver original
  1. -- para telefonos_repetidos con tel1 y tel2
  2. update fullclean_contactos.contactos T5
  3. ((SELECT t1.tel1, IFNULL((t1.total+t2.total2),0) veces
  4. FROM (select tel1, count(tel1) total
  5. FROM fullclean_contactos.contactos
  6. GROUP BY tel1) t1
  7. (select tel2, COUNT(tel2) total2
  8. FROM fullclean_contactos.contactos
  9. GROUP BY tel2) t2 ON t1.tel1 = t2.tel2)) t4
  10. on T5.tel1 = t4.tel1 set T5.telefonos_repetidos = t4.veces;



Código MySQL:
Ver original
  1. -- para telefonos_repetidos2 con tel2 y tel1
  2. update fullclean_contactos.contactos T5
  3. ((SELECT t1.tel2, IFNULL((t1.total+t2.total2),0) veces
  4. FROM (select tel2, count(tel2) total
  5. FROM fullclean_contactos.contactos
  6. GROUP BY tel2) t1
  7. (select tel1, COUNT(tel1) total2
  8. FROM fullclean_contactos.contactos
  9. GROUP BY tel1) t2 ON t1.tel2 = t2.tel1)) t4
  10. on T5.tel2 = t4.tel2 set T5.telefonos_repetidos2 = t4.veces;
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #8 (permalink)  
Antiguo 05/04/2010, 09:36
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: telefonos repetidos.

listo ya esta perfecto ya la probe y me funciona tal como quiero que me funcione.
esta formula me funciona perfecto para cuando necesito ejectutarlo de forma general.

ahora necesito algo un poco mas sencillo reusando esa.. que seria para caso particular.

es decir. que yo le de un telefono. y me diga cuantas veces esta repetido en tel1 y tel2 y me lo ubique en telefonos_reptidos

por ejemplo
le doy tel1 = 6645374
pero no supe donde poner el where en la consulta que me diste..
gracias.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #9 (permalink)  
Antiguo 05/04/2010, 12:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: telefonos repetidos.

Te lo pongo para el select y del lado de tel1:
SELECT t1.tel1, IFNULL((t1.total+t2.total2),0)veces FROM (select tel1, count(tel1) total FROM tabla WHERE tel1 = '6645374' GROUP BY tel1)t1 LEFT JOIN
(select tel2, COUNT(tel2) total2 FROM tabla GROUP BY tel2)t2 ON t1.tel1 = t2.tel2

Creo que sabrás adaptarlo luego
  #10 (permalink)  
Antiguo 05/04/2010, 13:01
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 10 meses
Puntos: 4
Respuesta: telefonos repetidos.

excelente..
muchisimas gracias..
esta perfecto.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Etiquetas: repetidos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:00.