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

Separar datos de una sola tabla en 2 tablas

Estas en el tema de Separar datos de una sola tabla en 2 tablas en el foro de Mysql en Foros del Web. Buenas, gracias por las rptas que puedan dar...miren tengo un problema, me han dado una tabla que mas o menos es asi: COD ACTIVIDAD === ...
  #1 (permalink)  
Antiguo 23/08/2009, 17:26
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 10 años, 7 meses
Puntos: 0
Separar datos de una sola tabla en 2 tablas

Buenas, gracias por las rptas que puedan dar...miren tengo un problema, me han dado una tabla que mas o menos es asi:
COD ACTIVIDAD
=== ========
A Agricultura,ganadería, caza
11 Agricultura, ganaderÃ*a, caza y actividades de ser...
12 Cultivos en general; cultivo de productos de merca...
. ........
. ............
. ..........
B Pesca
23 Pesca, explotación de criaderos de peces y granja...
. ........
. ...........
. ..............

Se supone que los que tiene un codigo Alfabético son las actividades y que los q vienen debajo son sus SUBACTIVIDADES...lo q estoy buscando es separarlos porque en mi programa necesito hacer una consulta de las subactividades de una actividad, estaba pensando en separarlo pero nose como llevar la data de esta tabla a otra...son varios datos, el codigo alfabetico creo q llega a "Z". Ojala me puedan ayudar
  #2 (permalink)  
Antiguo 24/08/2009, 03:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 8 meses
Puntos: 300
Respuesta: Separar datos de una sola tabla en 2 tablas

Xtian87,
Supongo que usas tablas MyIsam y que la tabla que tienes se llama tutabla. Estos serían algunos pasos para hacer lo que quieres.
1) crea una tabla llamada actividades con los campos, cod y actividad
2) cargas las actividades de tutabla en la tabla actividades: INSERT INTO actividades (COD, actividad) SELECT cod, actividad FROM `tutabla` WHERE COD between 'A' AND 'Z'
3) borras de tu tabla Antigua las actividades: DELETE FROM `tutabla` WHERE COD between 'A' AND 'Z'
4) cambias el nombre de la tabla tutabla a subactividades: RENAME TABLE `tubase`.`tutabla` TO `tubase`.`subactividades` ;
5) añades un campo codactividad a la tabla subactividades: ALTER TABLE `subactividades` ADD `codactividad` VARCHAR( 20 ) NOT NULL AFTER `COD` ;
6) cambias el nombre de campo actividad a subactividad en la tabla subactividades: ALTER TABLE `subactividades` CHANGE `ACTIVIDAD` `subactividad` VARCHAR( 250 )
7) UPDATE subactividades SET codactividad = 'A' WHERE COD LIKE '1.%'
y lo haces con cada cod de actividad, es decir el A con '1.%'; el B con '2.%'; el C con '3.%' y así respectivamente, si es que son estas correspondencias.
8) y ya podrás hacer una consulta como esta:
SELECT subactividades.subactividad FROM subactividades INNER JOIN actividades ON actividades.cod = subactividades.codactividad WHERE actividades.cod = 'A'
Comprueba siempre los tamaños de los campos (deben ser iguales en tamaño y tipo a los campos de procedencia) para no cortar el texto al trasladar de una tabla a otra.

Una advertencia: por los textos que has pegado, sospecho que tal vez tengas un problema de codificación. Dinos cómo tienes codificada la base y las tablas, y el cotejamiento de base, tablas y campos, por si viéramos algo raro.

Última edición por jurena; 24/08/2009 a las 05:26
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 13:38.