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

Update a partir de un select

Estas en el tema de Update a partir de un select en el foro de Mysql en Foros del Web. Buenos días, tengo un select que recoge datos de varias tablas a través de una serie de funciones, este select genera una tabla con unos ...
  #1 (permalink)  
Antiguo 07/05/2021, 03:28
 
Fecha de Ingreso: mayo-2010
Mensajes: 103
Antigüedad: 13 años, 11 meses
Puntos: 4
Update a partir de un select

Buenos días, tengo un select que recoge datos de varias tablas a través de una serie de funciones, este select genera una tabla con unos campos. Lo que quiero es hacer un update de una tabla con los datos resultantes de ese select y no se como hacerlo, alguien me puede ayudar. Gracias.
__________________
salud
ainvar de los carnutos
  #2 (permalink)  
Antiguo 07/05/2021, 04:15
 
Fecha de Ingreso: mayo-2010
Mensajes: 103
Antigüedad: 13 años, 11 meses
Puntos: 4
Respuesta: Update a partir de un select

He intentado así, pero no funciona

Código MySQL:
Ver original
  1. update tmp_puntos_usuarios tpu
  2. id_usuario = iu,
  3. puntos_obtenidos = puntos_obtenidos,
  4. puntos_redimidos = puntos_redimidos,
  5. puntos_disponibles = puntos_disponibles,
  6. puntos_caducan_este_anio = puntos_caducan_este_anio,
  7. puntos_caducan_mayo = puntos_caducan_mayo
  8. (select usuarios.id_usuario as iu,
  9. obtener_puntos_obtenidos_usuario(usuarios.id_usuario) AS puntos_obtenidos,
  10. obtener_puntos_redimidios_usuario(usuarios.id_usuario) AS puntos_redimidos,
  11. obtener_saldo_actual_usuario(usuarios.id_usuario, id_pais) AS puntos_disponibles,
  12. obtener_puntos_caducan_anio_actual(usuarios.id_usuario) AS puntos_caducan_este_anio,
  13. obtener_puntos_caducan_202010131_func(usuarios.id_usuario) AS puntos_caducan_mayo
  14. from usuarios
  15. left join usuarios_paises up on up.id_usuario = usuarios.id_usuario
  16. where usuarios.id_perfil IN (2,6,11,7,8,9,10,13);
__________________
salud
ainvar de los carnutos
  #3 (permalink)  
Antiguo 30/07/2021, 20:55
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, 4 meses
Puntos: 2658
Respuesta: Update a partir de un select

No se hacen UPDATE basados en SELECT en ningún DBMS, hasta lo que se. LO que tienes que hacer es un JOIN entre la tabla destino y la subquery donde realizas los cálculos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 30/07/2021, 22:40
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: Update a partir de un select

Como dice gnzsoloyo, no puedes hacer UPDATE FROM SUBCONSULTA (ni DELETE FROM SUBCONSULTA), puesto que los UPDATES/DELETE deben efectuarse sobre tablas existentes, no sobre tablas virtuales (también llamadas inline views o derived tables). Ten en cuenta que las subconsultas devuelven siempre una tabla virtual.

Lo que debes hacer es un UPDATE JOIN.


Última edición por prueba230683; 31/07/2021 a las 12:51

Etiquetas: select, update
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 18:40.