elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  insertar datos de diferentes tablas con left join
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: insertar datos de diferentes tablas con left join  (Leído 4,039 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
insertar datos de diferentes tablas con left join
« en: 27 Junio 2015, 23:06 pm »

Hola buenas! Estoy intentando unir varias tablas en una sola, pero no estoy muy seguro de como hacerlo. La estructura de las tablas es la siguiente:

Código
  1. -- tablas: en, fr, de, zh_cn, es, ru, pt_br
  2. `geoname_id` INT (11),
  3. `continent_code` VARCHAR (200),
  4. `continent_name` VARCHAR (200),
  5. `country_iso_code` VARCHAR (200),
  6. `country_name` VARCHAR (200),
  7. `subdivision_1_name` VARCHAR (200),
  8. `subdivision_2_name` VARCHAR (200),
  9. `city_name` VARCHAR (200),
  10. `time_zone` VARCHAR (200)

Son 7 tablas (cada una un idioma diferente) y me gustaría juntarlas todas en una sola, añadiendo como prefijo el código del pais delante de los nombres de las columnas.

Esta es la estructura de la nueva tabla, donde el contenido de las demás sera añadido:

Código
  1. CREATE TABLE `geo_lists` (
  2. `city_id` INT (11), -- en.geoname_id (same for all 7 tables)
  3. `continent_code` VARCHAR (2), -- en.continent_code (same for all 7 tables)
  4. `continent_name` VARCHAR (200), -- en.continent_name (just in english)
  5. `country_code` VARCHAR (2), -- en.country_iso_code (same for all 7 tables)
  6. `en_country_name` VARCHAR (200), -- en.country_name
  7. `fr_country_name` VARCHAR (200), -- fr.country_name
  8. `de_country_name` VARCHAR (200), -- de.country_name
  9. `zh_country_name` VARCHAR (200), -- zh_cn.country_name
  10. `es_country_name` VARCHAR (200), -- es.country_name
  11. `ru_country_name` VARCHAR (200), -- ru.country_name
  12. `pt_country_name` VARCHAR (200), -- pt_br.country_name
  13. `en_state_name` VARCHAR (200), -- en.subdivision_1_name
  14. `fr_state_name` VARCHAR (200), -- fr.subdivision_1_name
  15. `de_state_name` VARCHAR (200), -- de.subdivision_1_name
  16. `zh_state_name` VARCHAR (200), -- zh_cn.subdivision_1_name
  17. `es_state_name` VARCHAR (200), -- es.subdivision_1_name
  18. `ru_state_name` VARCHAR (200), -- ru.subdivision_1_name
  19. `pt_state_name` VARCHAR (200), -- pt_br.subdivision_1_name
  20. `en_province_name` VARCHAR (200), -- en.subdivision_2_name
  21. `fr_province_name` VARCHAR (200), -- fr.subdivision_2_name
  22. `de_province_name` VARCHAR (200), -- de.subdivision_2_name
  23. `zh_province_name` VARCHAR (200), -- zh_cn.subdivision_2_name
  24. `es_province_name` VARCHAR (200), -- es.subdivision_2_name
  25. `ru_province_name` VARCHAR (200), -- ru.subdivision_2_name
  26. `pt_province_name` VARCHAR (200), -- pt_br.subdivision_2_name
  27. `en_city_name` VARCHAR (200), -- en.city_name
  28. `fr_city_name` VARCHAR (200), -- fr.city_name
  29. `de_city_name` VARCHAR (200), -- de.city_name
  30. `zh_city_name` VARCHAR (200), -- zh_cn.city_name
  31. `es_city_name` VARCHAR (200), -- es.city_name
  32. `ru_city_name` VARCHAR (200), -- ru.city_name
  33. `pt_city_name` VARCHAR (200), -- pt_br.city_name
  34. `time_zone` VARCHAR (30) -- en.time_zone (same for all 7 tables)
  35. );

Así lo que estoy intentando hacer, pero algo va mal:

Código
  1. INSERT INTO geo_lists
  2. -- columns
  3. (city_id, continent_code, continent_name, country_code,
  4. en_country_name,
  5. fr_country_name,
  6. de_country_name,
  7. zh_country_name,
  8. es_country_name,
  9. ru_country_name,
  10. pt_country_name,
  11.  
  12. en_state_name,
  13. fr_state_name,
  14. de_state_name,
  15. zh_state_name,
  16. es_state_name,
  17. ru_state_name,
  18. pt_state_name,
  19.  
  20. en_province_name,
  21. fr_province_name,
  22. de_province_name,
  23. zh_province_name,
  24. es_province_name,
  25. ru_province_name,
  26. pt_province_name,
  27.  
  28. en_city_name,
  29. fr_city_name,
  30. de_city_name,
  31. zh_city_name,
  32. es_city_name,
  33. ru_city_name,
  34. pt_city_name,
  35.  
  36. time_zone)
  37.  
  38. -- end columns
  39.  
  40. SELECT
  41. en.geoname_id, en.continent_code, en.continent_name, en.country_iso_code,
  42. en.country_name AS en_country_name,
  43. fr.country_name AS fr_country_name,
  44. de.country_name AS de_country_name,
  45. zh_cn.country_name AS zh_country_name,
  46. es.country_name AS es_country_name,
  47. ru.country_name AS ru_country_name,
  48. pt_br.country_name AS pt_country_name,
  49.  
  50. en.subdivision_1_name AS en_state_name,
  51. fr.subdivision_1_name AS fr_state_name,
  52. de.subdivision_1_name AS de_state_name,
  53. zh_cn.subdivision_1_name AS zh_state_name,
  54. es.subdivision_1_name AS es_state_name,
  55. ru.subdivision_1_name AS ru_state_name,
  56. pt_br.subdivision_1_name AS pt_state_name,
  57.  
  58. en.subdivision_2_name AS en_province_name,
  59. fr.subdivision_2_name AS fr_province_name,
  60. de.subdivision_2_name AS de_province_name,
  61. zh_cn.subdivision_2_name AS zh_province_name,
  62. es.subdivision_2_name AS es_province_name,
  63. ru.subdivision_2_name AS ru_province_name,
  64. pt_br.subdivision_2_name AS pt_province_name,
  65.  
  66. en.city_name AS en_city_name,
  67. fr.city_name AS fr_city_name,
  68. de.city_name AS de_city_name,
  69. zh_cn.city_name AS zh_city_name,
  70. es.city_name AS es_city_name,
  71. ru.city_name AS ru_city_name,
  72. pt_br.city_name AS pt_city_name,
  73.  
  74. en.time_zone
  75.  
  76. FROM en, fr, de, zh_cn, es, ru, pt_br
  77.  
  78. WHERE en.geoname_id = fr.geoname_id
  79. AND fr.geoname_id = de.geoname_id
  80. AND de.geoname_id = zh_cn.geoname_id
  81. AND zh_cn.geoname_id = es.geoname_id
  82. AND es.geoname_id = ru.geoname_id
  83. AND ru.geoname_id = pt_br.geoname_id

El problema es que nunca termina de ejecutarse... Estoy usando SQLYog Community Edition en Windows 8.1. Lleva casi 1 hora ejecutandose y nada, los archivos csv solo pesan 42mb todas (no se cuanto pesaran ahora que estan metidos en tablas - usando LOAD DATA INFILE)

Gracias!

Edito para añadir estructura de la nueva tabla, y como se juntan todas en la nueva.

Vale el problema es que se me olvido poner primary key para la primera columna (id).


« Última modificación: 28 Junio 2015, 22:17 pm por gAb1 » En línea

Toxico


Desconectado Desconectado

Mensajes: 406



Ver Perfil
Re: insertar datos de diferentes tablas con left join
« Respuesta #1 en: 31 Julio 2015, 06:15 am »

Has probado al intentar ejecutar el select sin el insert?


En línea

solo el principio....

fran800m

Desconectado Desconectado

Mensajes: 204



Ver Perfil
Re: insertar datos de diferentes tablas con left join
« Respuesta #2 en: 31 Julio 2015, 20:55 pm »

¿Están indizadas las columnas que unen las tablas?

Código:
WHERE en.geoname_id = fr.geoname_id
AND fr.geoname_id = de.geoname_id
AND de.geoname_id = zh_cn.geoname_id
AND zh_cn.geoname_id = es.geoname_id
AND es.geoname_id = ru.geoname_id
AND ru.geoname_id = pt_br.geoname_id
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Join entre tres tablas?
Bases de Datos
javirk 1 4,103 Último mensaje 12 Febrero 2012, 15:01 pm
por ‭lipman
como puedo relacionar 3 tablas en mysql con inner join
Bases de Datos
kary2013 2 45,508 Último mensaje 26 Febrero 2013, 18:29 pm
por 1mpuls0
insertar en 1 sql solo varios datos relacionado con varias tablas
Bases de Datos
tecasoft 4 4,251 Último mensaje 22 Octubre 2015, 20:08 pm
por 0roch1
MySQL Join con 2 tablas
Java
jairoo15 0 2,363 Último mensaje 11 Mayo 2017, 19:41 pm
por jairoo15
Django - cruzar dos tablas transaccionales de diferentes bases de datos
Desarrollo Web
JuanjoXD 1 3,633 Último mensaje 2 Noviembre 2019, 06:47 am
por JuanjoXD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines