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

cruzar datos entre dos tablas

Estas en el tema de cruzar datos entre dos tablas en el foro de Mysql en Foros del Web. Hola a todos, estoy intentando hacer un mapeo(cruzar datos entre dos tablas diferentes), entre dos tablas de ciudades del mundo, lo estoy haciendo comparando el ...
  #1 (permalink)  
Antiguo 13/12/2013, 04:02
 
Fecha de Ingreso: octubre-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Pregunta cruzar datos entre dos tablas

Hola a todos,
estoy intentando hacer un mapeo(cruzar datos entre dos tablas diferentes), entre dos tablas de ciudades del mundo, lo estoy haciendo comparando el nombre entre dos tablas cuando el idioma es la misma en los dos y el codigo de pais es el mismo, lo que pasa es hay algunas ciudades que no estan escritas bien , o bien por ('ll' en vez de 'l', 's' en vez de z), probe haciendo un like pero se descartan muchos datos por este problema, tambien con el sounds like y tambien hay un problema por el parecido de los nombre,
os dejo aqui el codigo que tengo hecho para que lo podeis mirar y sugerirme alguna solucion mas optimizada.

INSERT INTO `b_cities`
SELECT bc.`city_id`, bc.name, lm.`id_country`, lm.`id_prov`, lm.`id`
FROM `cities` bc
INNER JOIN `list_municipios` lm ON bc.languagecode = 'en' AND lm.`desc_en` SOUNDS LIKE bc.name
INNER JOIN `list_country` lc ON lc.id = lm.id_country AND lc.code = bc.countrycode
  #2 (permalink)  
Antiguo 13/12/2013, 12:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: cruzar datos entre dos tablas

Código MySQL:
Ver original
  1. INSERT INTO b_cities
  2. SELECT bc.city_id,
  3.             bc.name,
  4.             lm.id_country,
  5.             lm.id_prov,
  6.             lm.id
  7. FROM cities bc INNER JOIN list_municipios lm
  8.                            ON lm.desc_en=bc.name
  9.                                  AND lm.id_country = bc.countrycode
  10. WHERE bc.languagecode = 'en';


Esto te dará las que sean iguales y del mismo pais ... si usas

Código MySQL:
Ver original
  1. INSERT INTO b_cities
  2. SELECT bc.city_id,
  3.             bc.name,
  4.             lm.id_country,
  5.             lm.id_prov,
  6.             lm.id
  7. FROM cities bc INNER JOIN list_municipios lm
  8.                            ON lm.desc_en SOUNDS LIKE bc.name
  9.                                  AND lm.id_country = bc.countrycode
  10. WHERE bc.languagecode = 'en';

las que suenen igual....

list_country no la necesitas..... excepto que quieras el nombre del pais, pewro como no lo pones en la lista del select....

Si
lm.id_country = bc.countrycode

no son iguales

Código MySQL:
Ver original
  1. INSERT INTO b_cities
  2. SELECT bc.city_id,
  3.             bc.name,
  4.             lm.id_country,
  5.             lm.id_prov,
  6.             lm.id
  7. FROM (cities bc INNER JOIN list_country lc ON lc.code = bc.countrycode)
  8.                       INNER JOIN list_municipios lm
  9.                            ON lm.desc_en SOUNDS LIKE bc.name
  10.                                  AND lm.id_country = lc.id
  11. WHERE bc.languagecode = 'en';
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/12/2013 a las 12:58

Etiquetas: join, select, tabla, tablas
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 18:34.