Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/08/2013, 13:44
aprendiz69
 
Fecha de Ingreso: junio-2008
Mensajes: 8
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Actualizar datos de un campo con datos de varios campos

Hola de nuevo,

Como me daba la impresión de que este comando sería bastante complicado de elaborar, finalmente he resuelto el problema al estilo de la montaña y Mahoma:

En primer lugar, he creado los campos taxonomy, term_id y name en la tabla wp_term_relationships:
Código:
ALTER TABLE wp_term_relationships ADD COLUMN taxonomy varchar(32) NOT NULL DEFAULT '' AFTER term_taxonomy_id;
ALTER TABLE wp_term_relationships ADD COLUMN term_id bigint(20) NOT NULL DEFAULT '0' AFTER taxonomy;
ALTER TABLE wp_term_relationships ADD COLUMN name varchar(200) NOT NULL DEFAULT '' AFTER term_id;
Después, he actualizado los campos term_id y taxonomy de la tabla wp_term_relationships desde la tabla wp_term_taxonomy tomando como referencia el campo term_taxonomy_id de ambas tablas:
Código:
UPDATE wp_term_relationships, wp_term_taxonomy
SET wp_term_relationships.taxonomy = wp_term_taxonomy.taxonomy, wp_term_relationships.term_id = wp_term_taxonomy.term_id
WHERE wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id;
A continuación, he actualizado el campo name de la tabla wp_term_relationships desde la tabla wp_terms tomando como referencia el campo term_id de ambas tablas:
Código:
UPDATE wp_term_relationships, wp_terms
SET wp_term_relationships.name = wp_terms.name
WHERE wp_term_relationships.term_id = wp_terms.term_id;
Después, he creado los campos categories y tags en la tabla wp_posts (longtext para permitir que quepan todas las categorías y etiquetas cuando las páginas y entradas tengan muuuuchas):
Código:
ALTER TABLE wp_posts ADD COLUMN tags longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER post_title;
ALTER TABLE wp_posts ADD COLUMN categories longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' AFTER post_title;
A continuación, he importado en modo multivaluado los nombres de categorías y etiquetas a los campos categories y tags de la tabla wp_posts:
Código:
UPDATE wp_posts
SET wp_posts.categories =
(SELECT GROUP_CONCAT(DISTINCT
CASE WHEN wp_term_relationships.taxonomy = 'category'
THEN wp_term_relationships.name END
ORDER BY wp_term_relationships.term_taxonomy_id
SEPARATOR "|")
FROM wp_term_relationships
WHERE wp_posts.ID = wp_term_relationships.object_id
GROUP BY wp_posts.ID)
Código:
UPDATE wp_posts
SET wp_posts.tags =
(SELECT GROUP_CONCAT(DISTINCT
CASE WHEN wp_term_relationships.taxonomy = 'post_tag'
THEN wp_term_relationships.name END
ORDER BY wp_term_relationships.term_taxonomy_id
SEPARATOR "|")
FROM wp_term_relationships
WHERE wp_posts.ID = wp_term_relationships.object_id
GROUP BY wp_posts.ID)
Y, finalmente, he comprobado que todo ha ido bien:
Código:
SELECT ID, post_title, categories, tags FROM wp_posts ORDER BY ID;
Ha quedado perfecto, tal y como quería tenerlo para facilitar la migración a Plone.



Gracias de nuevo a Leo por la ayuda prestada y saludos cordiales,

Manuel