Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/09/2011, 15:14
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Case en update, varios campos

Hola Yoso:

Si es posible hacer lo que quieres, podrías por ejemplo utilizar un INNER JOIN en el update, sobre la misma tabla para obtener la descripción... me resulta complicado explicarlo con palabras, pero mejor checa el siguiente script:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE meses (noMES INT, MES VARCHAR(20));
  2. Query OK, 0 rows affected (0.28 sec)
  3.  
  4. mysql> INSERT INTO meses (noMES) VALUES (1), (2), (3), (11), (12);
  5. Query OK, 5 rows affected (0.10 sec)
  6. Records: 5  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> SELECT * FROM meses;
  9. +-------+------+
  10. | noMES | MES  |
  11. +-------+------+
  12. |     1 | NULL |
  13. |     2 | NULL |
  14. |     3 | NULL |
  15. |    11 | NULL |
  16. |    12 | NULL |
  17. +-------+------+
  18. 5 rows in set (0.00 sec)
  19.  
  20. mysql> UPDATE meses M1
  21.     -> INNER JOIN (
  22.     -> SELECT noMes, CASE noMes
  23.     -> WHEN 1 THEN 'ENERO'
  24.     -> WHEN 2 THEN 'FEBRERO'
  25.     -> WHEN 3 THEN 'MARZO'
  26.     -> WHEN 11 THEN 'NOVIEMBRE'
  27.     -> WHEN 12 THEN 'DICIEMBRE'
  28.     -> END MES FROM meses
  29.     -> ) M2 ON M1.noMes = M2.noMes
  30.     -> SET M1.MES = M2.MES;
  31. Query OK, 5 rows affected (0.04 sec)
  32. Rows matched: 5  Changed: 5  Warnings: 0
  33.  
  34. mysql> SELECT * FROM Meses;
  35. +-------+-----------+
  36. | noMES | MES       |
  37. +-------+-----------+
  38. |     1 | ENERO     |
  39. |     2 | FEBRERO   |
  40. |     3 | MARZO     |
  41. |    11 | NOVIEMBRE |
  42. |    12 | DICIEMBRE |
  43. +-------+-----------+
  44. 5 rows in set (0.00 sec)

Te recomiendo que leas en el manual acerca de la sintaxis del UPDATE utilizando JOIN's, te puede servir en un futuro.

Dale un vistazo y nos comentas.

Saludos
Leo.