MySQL - Actualizar Salario con UPDATE unido a otra TABLA

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 27 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Actualizar Salario con UPDATE unido a otra TABLA

Publicado por Angelo (1 intervención) el 17/07/2020 00:02:24
Buenas tardes Gente,
Tengo el siguiente problema puntual, utilizo Mysql Workbench 8.0 con Xampp.

Resulta que tengo dos tablas una de empleados donde hay una columna que dice "salario", y otra tabla que se llama empleado donde hay una columna que dice "ajuste_rango".

Mi idea es actualizar por ejemplo el salario del trabajador del id1 de manera que se genere un cruce de tablas con UPDATE pero no logro resolverlo.

Aquí tengo mi sentencia, la cuál en Mysql:

"UPDATE empleado INNER JOIN ajuste ON empleado.id4 = ajuste.id26
SET empleado.id4 = ajuste.id26
WHERE ajuste.id26 = empleado.id4;"

En el depurador del motor no me arroja ningún error, pero cuando genero la consulta me salta el siguiente error:

"17:59:48 UPDATE empleado INNER JOIN ajuste ON empleado.id4 = ajuste.id26 SET empleado.id4 = ajuste.id26 WHERE ajuste.id26 = empleado.id4 Error Code: 1054. Unknown column 'empleado.id4' in 'field list' 0.000 sec"

Entonces no entiendo en qué voy mal, si en WHERE están bien especificadas las tablas y las filas que deseo actualizar, en este caso la de empleado.

En tabla ajuste columna rango hay float, es decir es un porcentaje en decimal para actualizar la tabla.

Les agradecería su ayuda desde ya,
Que estén bien y Saludos desde Chile.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Actualizar Salario con UPDATE unido a otra TABLA

Publicado por Francisco (73 intervenciones) el 17/07/2020 19:48:51
El problema es que UPDATE no soporta JOINS al menos no en MySQL

Tienes que usar un SUB SELECT para resolver el problema


1
2
UPDATE empleado
	SET empleado.id4 = (SELECT ajuste.id26 FROM ajuste WHERE ajuste.id26 = empleado.id4);

https://dev.mysql.com/doc/refman/8.0/en/update.html

otra variante seria esta (tomada del manual de MySQL 8)

1
2
3
4
5
6
7
8
UPDATE items,
       (SELECT id FROM items
        WHERE id IN
            (SELECT id FROM items
             WHERE retail / wholesale >= 1.3 AND quantity < 100))
        AS discounted
SET items.retail = items.retail * 0.9
WHERE items.id = discounted.id;

Que en teoria deberia ser asi para tu caso

1
2
3
UPDATE empleado, ajuste
	SET empleado.id4 = ajuste.id26
WHERE empleado.id4 = ajuste.id26;

Pero no estoy seguro de que funcione


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar