Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/08/2013, 13:29
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Actualizar datos de un campo con datos de varios campos

Hola de nuevo aprendiz69:

Nuevamente olvidas decirnos cómo están relacionadas tus tablas... es decir, colocas los campos y la estructura parcial de tus tablas, pero no nos dices si cardinalidad de tus relaciones es 1-1 o 1-N... de esta información depende la manera en que debes hacer tu consulta...

Suponiendo que tienes una relación 1-1 entre tus tablas, podrías hacer lo siguiente:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla1;
  2. +------+-------------+
  3. | id   | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. |    3 | tres        |
  8. +------+-------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT * FROM tabla2;
  12. +------+---------------+
  13. | id   | categoria     |
  14. +------+---------------+
  15. |    1 | categoria 1.1 |
  16. |    1 | categoria 1.2 |
  17. |    2 | categoria 2.1 |
  18. +------+---------------+
  19. 3 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT * FROM tabla3;
  22. +---------------+----------------+
  23. | categoria     | etiqueta       |
  24. +---------------+----------------+
  25. | categoria 1.1 | etiqueta 1.1.1 |
  26. | categoria 1.2 | etiqueta 1.2.1 |
  27. | categoria 2.1 | etiqueta 2.1.1 |
  28. +---------------+----------------+
  29. 3 rows in set (0.00 sec)
  30.  
  31. mysql> SELECT
  32.     ->    tabla1.id, tabla1.descripcion,
  33.     ->    GROUP_CONCAT(tabla2.categoria) categorias,
  34.     ->    GROUP_CONCAT(tabla3.etiqueta) etiquetas
  35.     -> FROM tabla1
  36.     -> INNER JOIN tabla2 ON tabla1.id = tabla2.id
  37.     -> INNER JOIN tabla3 ON tabla2.categoria = tabla3.categoria
  38.     -> GROUP BY tabla1.id, tabla1.descripcion;
  39. +------+-------------+-----------------------------+-------------------------------+
  40. | id   | descripcion | categorias                  | etiquetas   |
  41. +------+-------------+-----------------------------+-------------------------------+
  42. |    1 | uno         | categoria 1.2,categoria 1.1 | etiqueta 1.2.1,etiqueta 1.1.1 |
  43. |    2 | dos         | categoria 2.1               | etiqueta 2.1.1   |
  44. +------+-------------+-----------------------------+-------------------------------+
  45. 2 rows in set (0.00 sec)

es decir, simplemente agregas la tabla como un INNER JOIN adicional y con eso queda listo, sin embargo, si tienes una relación de 1-n, es decir, que cada categoría tuviera más de una etiqueta entonces esta consulta no te serviría... observa qué pasaría con los siguientes datos:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla3;
  2. +---------------+----------------+
  3. | categoria     | etiqueta       |
  4. +---------------+----------------+
  5. | categoria 1.1 | etiqueta 1.1.1 |
  6. | categoria 1.1 | etiqueta 1.1.2 |
  7. | categoria 2.1 | etiqueta 2.1.1 |
  8. | categoria 2.1 | etiqueta 2.1.2 |
  9. +---------------+----------------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT
  13.     ->    tabla1.id, tabla1.descripcion,
  14.     ->    GROUP_CONCAT(tabla2.categoria) categorias,
  15.     ->    GROUP_CONCAT(tabla3.etiqueta) etiquetas
  16.     -> FROM tabla1
  17.     -> INNER JOIN tabla2 ON tabla1.id = tabla2.id
  18.     -> INNER JOIN tabla3 ON tabla2.categoria = tabla3.categoria
  19.     -> GROUP BY tabla1.id, tabla1.descripcion;
  20. +------+-------------+-----------------------------+-------------------------------+
  21. | id   | descripcion | categorias                  | etiquetas   |
  22. +------+-------------+-----------------------------+-------------------------------+
  23. |    1 | uno         | categoria 1.1,categoria 1.1 | etiqueta 1.1.2,etiqueta 1.1.1 |
  24. |    2 | dos         | categoria 2.1,categoria 2.1 | etiqueta 2.1.1,etiqueta 2.1.2 |
  25. +------+-------------+-----------------------------+-------------------------------+
  26. 2 rows in set (0.00 sec)

Observa que en la columna CATEGORIAS se están repitiendo descripciones... lo cual no es correcto... Finalmente, deberías considerar las siguientes situaciones:

1. todos los elementos de tu tabla wp_posts tienen una relación con 1 o más elementos de tu tabla wp_term_relationships, o puede haber elementos sin relaciones?...

2. Lo mismo para tus tablas wp_term_relationships. ¿puede haber elementos en esta tabla que no tengan asociados wp_term_taxonomy?

Dependiendo de estas respuestas será la complejidad de la consulta...

Finalmente, sería conveniente que nos pusieras además de las estructuras de tus tablas, algunos datos de ejemplo... es más sencillo visualizar tu problema y una posible solución a partir de datos reales, no inventados como es este caso...

Saludos
Leo.