|
Responder
|
| Autor | |
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Tema: Actualizar con el valor Max de otra tablaEnviado: 20/Agosto/2025 a las 12:31 |
|
Hola. ¿Cómo puedo actualizar una tabla por el valor máximo de otra tabla? Todos los intentos me dan error porque la consulta no es actualizable. Quiero actualizar en la tabla GeneralPedidos el IdEstado por el valor máximo del IdEstado de la tabla EstadosPedidos y agrupado además por el ID, porque EstadosPedidos puede tener varias filas con el mismo ID (no sé si me explico), algo así: UPDATE GeneralPedidos INNER JOIN EstadosPedidos ON GeneralPedidos.Id=EstadosPedidos.Id SET GeneralPedidos.IdEstado = (SELECT MAX(IdEstado) FROM EstadosPedidos) La única solución que he encontrado es crear una tabla nueva "MaxEstados" solo por los valores máximos IdEstado de la tabla EstadosPedidos agrupado por ID y luego a su vez, ahora sí me deja, actualizar GeneralPedidos con esa tabla ¿pero no hay otra forma en access? y cada vez que paso el procedimiento, ante tengo que borrarla: DELETE * FROM MaxEstados INSERT INTO MaxEstados(Id,IdEstado) SELECT Id, Max(IdEstado) FROM EstadosPedidos GROUP BY Id UPDATE GeneralPedidos INNER JOIN MaxEstados ON GeneralPedidos.Id= MaxEstados.Id SET GeneralPedidos.IdEstado = MaxEstados.IdEstado Muchas gracias, |
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 20/Agosto/2025 a las 14:56 |
|
Hola,
¿Y si en lugar de una consulta de 2 tablas utilizas una función agregada de dominio? UPDATE GeneralPedidos SET GeneralPedidos.IdEstado = DMax("IdEstado", "EstadosPedidos", "Id=" & GeneralPedidos.Id)º Nota 1: escrito al vuelo Nota 2: los experimentos con gaseosa Un saludo
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 20/Agosto/2025 a las 15:16 |
|
Hola xavi, gracias lo que pasa que esa función tarda mucho y no me compensa :(
|
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 20/Agosto/2025 a las 16:15 |
|
La SELECT debe ser algo así:
GeneralPedidos INNER JOIN (SELECT Id, MAX(IdEstado) AS ValorMax FROM EstadosPedidos GROUP BY Id) AS T1 ON GeneralPedidos.Id = T1.Id Sorry, no puedo probarlo ...
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 20/Agosto/2025 a las 18:29 |
|
hola, gracias Mihura pero me da error de sintaxis: Update GeneralPedidos INNER JOIN (SELECT Id, MAX(IdEstado) AS ValorMax FROM EstadosPedidos GROUP BY Id) AS T1 ON GeneralPedidos.Id = T1.Id
|
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 20/Agosto/2025 a las 21:06 |
|
Lo primero que yo haría es generar la SELECT y 'cuadrar' la consulta, ya la convertirás en una de actualización más adelante.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 25/Agosto/2025 a las 09:48 |
|
Hola, el select sería este pero ya digo, no permite la actualización: SELECT EstadosPedidos.Id, Max(EstadosPedidos.IdEstado) FROM EstadosPedidos GROUP BY EstadosPedidos.Id
|
|
![]() |
|
pitxiku
Colaborador
Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1536 |
Enviado: 25/Agosto/2025 a las 17:56 |
|
Hola.
De la ayuda en línea de Access (Solución de problemas de errores al actualizar datos en una consulta o formulario - Microsoft 365 Apps | Microsoft Learn): [...] Cuando la consulta calcula una suma, un promedio, un recuento u otro tipo de total en los valores de un campo, no se pueden actualizar los datos de la consulta. Además, no se puede actualizar una consulta que haga referencia a un campo de la fila Actualizar a desde una ficha cruzada, una consulta, una consulta de selección o una subconsulta que contenga totales o funciones agregadas. [...] Me temo que tendrás que seguir con la tabla temporal o usar la función de dominio como indicó Xavi.
Editado por pitxiku - 25/Agosto/2025 a las 17:57 |
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 27/Agosto/2025 a las 14:31 |
|
Hola, gracias. Vaya, que no hay manera. Muchas gracias Este hilo se puede cerrar Saludos,
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 02/Septiembre/2025 a las 11:52 |
|
hola, pueden cerrar el hilo, muchas gracias.
|
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |