Con la sentencia update podemos actualizar registros almacenados en una tabla de mi Base de datos pero en muchas ocasiones necesitamos actualizar cierto conjunto de registros a los cuales llegamos relacionando varias tablas por medio de un select, es ahí donde podemos usar la sentencia update con inner join para actualizar esos registros.
Sintaxis:
UPDATE < Alias de la tabla > SET < Campo a Actualizar > FROM < Tabla1 > A INNER JOIN < Tabla2 >B
ON (A.ID=B.ID)
Consideraciones a tener en cuenta al usar Update
- Debemos tener en cuenta que estamos trabajando con la sentencia UPDATE y si nos equivocamos al momento de formar la consulta podemos actualizar registros que no deseamos que se actualicen.
- Crear primero la sentencia SELECT con todos los joins entre tablas para revisar el resultado de la consulta.
- Tener en cuenta que esta consulta podría afectar un poco el rendimiento de la base debido que a parte de actualizar los registros primero debe realizar la unión entre tablas.
- Tener en cuenta la cláusula where cuando trabajamos con la sentencia update.
Ejercicios de Update con Inner Join
Teniendo en cuenta las siguientes 3 tablas: OrdenDeVenta – Clientes – Paises.
Ejercicio #1
Se necesita actualizar el campo comentario de todas las Ordenes de Venta con el siguiente texto: ‘Orden de Venta del Cliente (Nombre del Cliente) para el país de (Nombre del pais)’.
Solución:
Primero debemos ubicar las tablas que intervienen en el ejercicio y los campos que las relacionan entre ellas. Para este ejercicio debemos usar las 3 tablas, la tabla OrdeDeVenta que es donde vamos a hacer el update y las otras 2 tablas las necesitamos para el INNER JOIN.
En segundo lugar podemos hacer el select para ubicar los inner join que vamos a necesitar al momento de armar la sentencia update.
SELECT ORD.* FROM Clientes CLI INNER JOIN OrdenDeVenta ORD ON (CLI.ClienteID=ORD.ClienteID)
INNER JOIN PAISES PA ON (CLI.PaisID=PA.PaisID)
Y por ultimo armamos la sentencia update:
UPDATE ORD SET ORD.Comentario = 'Orden de Venta del Cliente'+CLI.PrimerNombre+' para el país de '+PA.Nombre FROM Clientes CLI INNER JOIN OrdenDeVenta ORD ON (CLI.ClienteID=ORD.ClienteID)
INNER JOIN PAISES PA ON (CLI.PaisID=PA.PaisID) WHERE ORD.Comentario IS NULL
Importante cuando usemos la sentencia update es no olvidarse de usar la cláusula where en la consulta porque después se actualizarán todos los registros.
Comentarios