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.

Diagrama Entidad Relación 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)
tabla OrdenDeVenta columna comentario sin valores

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
tabla OrdenDeVenta columna comentario actualizada

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.

Etiquetado en:

, ,