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

Combinar tres tablas con la misma estructura en una sola

Estas en el tema de Combinar tres tablas con la misma estructura en una sola en el foro de Mysql en Foros del Web. Hola, Mi pregunta es cómo combinar tres tablas que tienen la misma estructura en una misma. Me explico. Actualmente tengo: [comentarios_wiki] id idn nombre comentario ...
  #1 (permalink)  
Antiguo 08/12/2010, 01:37
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 2 meses
Puntos: 4
Combinar tres tablas con la misma estructura en una sola

Hola,

Mi pregunta es cómo combinar tres tablas que tienen la misma estructura en una misma. Me explico. Actualmente tengo:

[comentarios_wiki]
id
idn
nombre
comentario
fecha

[comentarios_noticias]
id
idn
nombre
comentario
fecha

[comentarios_revista]
id
idn
nombre
comentario
fecha

El campo ID es PRIMARY y Auto_increment. Lo que quiero hacer es crear una tabla nueva que se llame Comentarios con los mismos campos más otro nuevo llamado 'Categoría' y mover todos los registros de las tres tablas a la tabla 'Comentarios'. No me importa si luego tengo que poner yo a mano en qué categoría va cada uno.

¿Es posible?

Gracias!
__________________
Equívocos sin importancia
  #2 (permalink)  
Antiguo 08/12/2010, 05:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Combinar tres tablas con la misma estructura en una sola

Es posible, pero tienes dos problemas a resolver:
1) Necesitas crear una tabla de categorías, que en definitiva tendrá valores fijos, pero que se usará para normalizar la base.
2) Si las PK de esas noticias se usan como FK en otra tabñla, requeriras crear un proceso que permita migrar los viejos valores de PK por los nuevos.

Respecto a cómo hacer para crear esa tabla nueva, en realidad requiere muy pocas sentencias:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS categoria_comment(
  2.     comment_name VARCHAR(100)) ENGINE=InnoDB;
  3. INSERT INTO categoria_comment(comment_name)
  4. VALUES('WIKI'), ('NOTICIAS'),('REVISTA');
  5.  
  6. CREATE TABLE IF NOT EXISTS comentarios LIKE comentarios_wiki;
  7.  
  8. ALTER TABLE comentarios ADD COLUMN comment_id INT UNSIGNED;
  9. ALTER TABLE comentarios ADD FOREIGN KEY (comment_id)
  10.     REFERENCES categoria_comment(comment_id) ;
  11.  
  12. INSERT INTO comentarios(idn, nombre, comentario, fecha, comment_id)
  13. SELECT idn, nombre, comentario, fecha, 1 comment_id
  14. FROM comentarios_wiki
  15. SELECT idn, nombre, comentario, fecha, 2 comment_id
  16. FROM comentarios_noticias
  17. SELECT idn, nombre, comentario, fecha, 3 comment_id
  18. FROM comentarios_revista;

Puede que esté faltando o haya que corregir algo, pero la idea sería mas o menos esa.

Despues de esto, si las ID de las viejas tablas se usan como FK en alguna parte, sería necesario actualizar los valores por los nuevos y luego "desenganchar" esas tablas y hacer que se referencien a la nueva.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: combinar, estructura, tablas, tres
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 12:37.