Ir al contenido


Foto

insertar campo en una tabla obtenido de otra php - mysql


  • Por favor identifícate para responder
9 respuestas en este tema

#1 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 12 agosto 2013 - 08:34

Hola gente del foro!!
Agradezco desde ya su paciencia soy principiante aprendiendo (gracias a César).
Juro que antes de postear en el foro intenté de todas las formas que se me ocurrieron sin éxito.
Tengo una tabla con todos los codigos postales de México y necesito aumentar un campo con el ID del municipio (de otra tabla) algo que en excel resolvería con la funcion BUSCARV(valor a buscar, matriz, indicador de columna, ordenado) alguna sugerencia?
Bonito día!
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 agosto 2013 - 09:14

Claro es muy sencillo. 

Puedes usar una consulta de actuialización para modificar el valor usando como identificador el id del código postal.  Si tienes duda de cómo hacerlo en tu aplicación comparte un poco más de como está hecho para poder sugererirte soluciones.

Saludos.
  • 0

#3 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 12 agosto 2013 - 09:43

Gracias Poliburro,

Mi tabla donde estan los municipios se llama mun y ésta es la estructura:

CREATE TABLE `mun` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `id_mun` int(11) NOT NULL,
  `mun` varchar(250) COLLATE utf8_spanish_ci DEFAULT NULL,
  `edo` varchar(250) COLLATE utf8_spanish_ci DEFAULT NULL,
  `id_edo` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=2462 ;


Tengo otra tabla cpmexico (obtenida del servicio postal mexicano ) con ésta estructura:

Lo que necesito es insertar los valores del campo id de la tabla mun en el campo id_mun de la tabla cpmexico que corresponda de acuerdo al nombre del municipio (en el campo mun de la tabla mun y municipio de la tabla cpmexico)

CREATE TABLE `cpmexico` (
  `id_cons` int(10) NOT NULL AUTO_INCREMENT,
  `cp` int(5) unsigned zerofill NOT NULL,
  `asenta` varchar(90) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `tipo_asenta` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `municipio` varchar(150) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `id_mun` int(11) DEFAULT NULL,
  `estado` varchar(100) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `ciudad` varchar(150) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `id_CP` int(5) NOT NULL,
  `id_estado` int(3) NOT NULL,
  `id_oficina` int(5) NOT NULL,
  `id_tipo_asenta` int(5) NOT NULL,
  `id_municipio` int(3) NOT NULL,
  `id_asenta_cpcons` int(8) NOT NULL,
  `zona` varchar(40) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `id_ciudad` int(8) NOT NULL,
  `c_CP` int(8) NOT NULL,
  PRIMARY KEY (`id_cons`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6577 ;


Lo intententé con join, también intenté hacerlo con varias consultas y todo lo que se me ocurrio pero como te digo soy MUY principiante y estoy aprendiendo desde el concepto de tener paciencia. 
Espero que la info sea útil y no esté muy cantinfleado mi planteamiento.
De antemano MIL GRACIAS!
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 agosto 2013 - 03:16

veamos, espero haber entendido tu problema. :)

¿Lo que necesitas es actualizar el valor id_mun en cpmexico para todos aquellos registros que coinciden con mun?

de ser así puedes hacerlo de la siguiente manera:

    
    Update cpmexico as mexico
inner join mun  as municipio   
            on mexico.municipio = municipio.mun
          set cpmexico.id_mun = municipio.id



Este artículo de mi blog puede ayudarte

http://elpoli.delphi...tencias-update/
  • 0

#5 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 12 agosto 2013 - 05:27

Gracias otra vez Poliburro!
siyasé... los nombres de mis tablas y campos estaban del zorrillo y hasta yo me hice bolas... así es que te propongo un negocio:
ya las rebauticé para que los nombres de los campos queden igual en las dos tablas:

Tengo una tabla codigos (más de 140,000 registros) con un campo vacío que se llama id_municipio.
Quiero pasar a ese campo, los valores del campo id_municipio de mi otra tabla que se llama municipios (2500 registros).

El campo que tienen en común es municipio (asi se llama en las dos tablas) .

En síntesis, necesito actualizar el valor id_municipio en la tabla codigos (desde el campo id_municipio de la tabla muncipios) en todos aquellos registros que coincidan en municipio (mismo nombre del campo en ambas tablas)

¿Estuvo más claro?  :)

  • 0

#6 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 12 agosto 2013 - 06:27

Poliburrito!!!  tomando tu consulta lo intenté así:

UPDATE codigos
INNER JOIN municipios     
            ON codigos.municipio = municipios.municipio
          SET codigos.id_municipio = municipios.id_municipio

Después de un ratito apareció:

MySQL ha dicho: Documentación
#1205 - Lock wait timeout exceeded; try restarting transaction

¿es enorme mi tabla con 140,000 registros o qué sucede?  :sad:
  • 0

#7 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 agosto 2013 - 10:34

MySQL ha dicho: Documentación
#1205 - Lock wait timeout exceeded; try restarting transaction

¿es enorme mi tabla con 140,000 registros o qué sucede?  :sad:


140,000 registros no son muchos en realidad, puede ser que haya un bloqueo en tu tabla así que de ser posible podrías revisar las conexiones en tu servidor y verificar si existen bloqueos?,

Después te aconsejo que agregues un índice a cada tabla para el campo municipio
  • 0

#8 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 13 agosto 2013 - 08:29

Nuevamente muchas gracias Poliburro!
  • 0

#9 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 13 agosto 2013 - 08:37

Nuevamente muchas gracias Poliburro!


¿Funcionó agregando el índice?
  • 0

#10 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 mensajes
  • LocationCiudad de México

Escrito 13 agosto 2013 - 10:25

Eres mi hit Poliburro... Funcionó a la perfección!
Inicialmente me marcó el mismo error pero la siguiente vez que utilicé mi tabla como por arte de magia estaba actualizado el campo.
Mil gracias nuevamente  :wink:
  • 0




IP.Board spam blocked by CleanTalk.