Consulta SQL Actualizar campos
Estoy intentado hacer una consulta con los siguientes datos.
BBDD: Base1
Tabla: Tabla1
Campo: id_recurso
La cosa es actualizar los elementos con id_recurso=38 a id_recurso=39.
El problema es que muchos elementos (no todos) tienen ambos recursos ya asignados (pueden tener de 1 a n recursos asignados) y esto debe quedarse así. El cambio solo debe afectar a los elementos que tienen 38, valor que se actualizará a 39. Si tienen valor 38 y 39 no deben modificar su campo 38.
Con esta sentencia se muestran los elementos que están en ambos casos (solo recurso 38 o recursos 38 y 39)
select *
from Tabla1
where id_recurso=38 or id_recurso=39
order by id_elemento
Esta es la sentencia update que había utilizado inicialmente pero claro, me devolvía un error de duplicidad porque al cambiar elementos con ambos recursos (38 y 39) el mismo locutorio se quedaba con valor 39, 39 lo cual no es posible ni correcto.
use Base1
update Tabla1
set id_recurso=39
where id_recurso=38
Imagino que en el where habría que meter alguna condición que excluyera aquellos elementos con recurso 38 y 39 ya asignado y es ahí donde me quedo bloqueado.
BBDD: Base1
Tabla: Tabla1
Campo: id_recurso
La cosa es actualizar los elementos con id_recurso=38 a id_recurso=39.
El problema es que muchos elementos (no todos) tienen ambos recursos ya asignados (pueden tener de 1 a n recursos asignados) y esto debe quedarse así. El cambio solo debe afectar a los elementos que tienen 38, valor que se actualizará a 39. Si tienen valor 38 y 39 no deben modificar su campo 38.
Con esta sentencia se muestran los elementos que están en ambos casos (solo recurso 38 o recursos 38 y 39)
select *
from Tabla1
where id_recurso=38 or id_recurso=39
order by id_elemento
Esta es la sentencia update que había utilizado inicialmente pero claro, me devolvía un error de duplicidad porque al cambiar elementos con ambos recursos (38 y 39) el mismo locutorio se quedaba con valor 39, 39 lo cual no es posible ni correcto.
use Base1
update Tabla1
set id_recurso=39
where id_recurso=38
Imagino que en el where habría que meter alguna condición que excluyera aquellos elementos con recurso 38 y 39 ya asignado y es ahí donde me quedo bloqueado.
1 Respuesta
Respuesta de davidsc14
1