Tabla de contenidos
En otras ocasiones, he tenido que realizar múltiples UPDATE de datos de algunas tablas. Normalmente son sentencias sencillas de realizar, pero a veces necesitamos condiciones de otras tablas. Y te habrás parado a pensar en que, ¿existe alguna manera de actualizar datos de una tabla aplicando unas condiciones de otras tablas?
Respuesta: Por supuesto que si, usted puede aplicar una sentencia UPDATE a una tabla cumpliendo condiciones a partir de otras tablas.
¿Cómo hacer un UPDATE INNER JOIN?
Si tienes dudas de cómo funciona los JOIN, te dejo el siguiente enlace:
https://docs.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-ver15
Este ejemplo se puede hacer con:
Escenario: Se trata de una compra de aplicaciones, en la que tenemos que relacionar estas 3 tablas entre sí.
Tablas
APLICACIÓN
- ID: Identificador de la aplicación.
- NOMBRE: Nombre de la aplicación.
USUARIOS
- ID: Identificador del usuario.
- USUARIO: Alias del usuario.
- ESTADO: Estado actual del usuario (Alta/Baja).
ORDENES
- ID: Identificador de la orden del pedido.
- ESTADO: Estado actual del pedido.
- IDUSUARIO: Usuario asociado al pedido.
- IDAPLICACION: Aplicación asociada al pedido.
UPDATE o
SET o.estado='Anulado'
FROM ordenes o
JOIN aplicacion a ON o.idaplicacion=a.id
JOIN usuarios u ON u.id=o.idusuario
WHERE o.estado NOT IN ('Pendiente','Alta') AND u.estado='Baja';
Recomendable: Crear primero el SELECT con los INNER JOIN para ver qué datos vamos a actualizar el UPDATE INNER JOIN, te puedes ahorrar más de un susto xD
Si quieres ver más artículos relacionados con SQL, te recomiendo que sigas al siguiente enlace: