MySQL Forums
Forum List  »  Spanish

Re: update a partir de un select
Posted by: Manuel Ruiz-Falcó Couto
Date: May 07, 2021 10:37AM

Ya he encontrado como hacerlo funcionar, y es la forma más simple (una vez sabido, todo es fácil), te pego aquí el código por si le sirve a alguien:

DROP TEMPORARY TABLE IF EXISTS temp_puntosusuarios;
CREATE TEMPORARY TABLE temp_puntosusuarios
select usuarios.id_usuario,
obtener_puntos_obtenidos_usuario(usuarios.id_usuario) AS puntos_obtenidos,
obtener_puntos_redimidios_usuario(usuarios.id_usuario) AS puntos_redimidos,
obtener_saldo_actual_usuario(usuarios.id_usuario, up.id_pais) AS puntos_disponibles,
obtener_puntos_caducan_anio_actual(usuarios.id_usuario) AS puntos_caducan_este_anio,
obtener_puntos_caducan_202010131_func(usuarios.id_usuario) AS puntos_caducan_mayo
from usuarios
left join usuarios_paises up on up.id_usuario = usuarios.id_usuario
where usuarios.id_perfil IN (2,6,11,7,8,9,10,13)
and usuarios.id_usuario <> 624;

UPDATE tmp_puntos_usuarios, temp_puntosusuarios
SET
tmp_puntos_usuarios.id_usuario = temp_puntosusuarios.id_usuario,
tmp_puntos_usuarios.puntos_obtenidos = temp_puntosusuarios.puntos_obtenidos,
tmp_puntos_usuarios.puntos_redimidos = temp_puntosusuarios.puntos_redimidos,
tmp_puntos_usuarios.puntos_disponibles = temp_puntosusuarios.puntos_disponibles,
tmp_puntos_usuarios.puntos_caducan_este_anio = temp_puntosusuarios.puntos_caducan_este_anio,
tmp_puntos_usuarios.puntos_caducan_mayo = temp_puntosusuarios.puntos_caducan_mayo
WHERE tmp_puntos_usuarios.id_usuario = temp_puntosusuarios.id_usuario;

Con estas 2 instrucciones consigo primero crear la tabla temporal y rellenarla y luego actualizar la tabla física sin problema.


Un saludo
--
Manuel Ruiz-Falcó Couto

Options: ReplyQuote


Subject
Views
Written By
Posted
Re: update a partir de un select
309
May 07, 2021 10:37AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.