Problemas con consulta de eliminación

Que tengo con una consulta de eliminación.
Necesito actualizar los datos de una tabla de Obras y para ello necesito eliminar una serie de registros cuyo Identificador de Obras coincida con los que hay en otra tabla importada.
Para ello he creado una consulta de eliminación que afecta a la tabla Obras poniendo como criterio el identificador de la otra tabla ("ObrasDelegaciones").
Hasta ahí todo bien, la consulta me devuelve los registros que quiero eliminar, pero al ejecutarla me sale un mensaje "especifique la tabla que contiene los registros que desea eliminar" y no los elimina.
He estado buscando en Internet y he encontrado una posible solución en la que me decía que sustituyese en la sql todos los campos de la tabla por asterisco. (Obras. *). Hecho esto el mensaje que aparece pasa a ser "No se pudo eliminar nada en las tablas especificadas". Ya no se me ocurre nada por hacer.
¿Me podrías orientar? La sentencia en vista sql de la consulta de elimnación es la siguiente:
DELETE Obras.*, Obras.Id_Obra
FROM Obras INNER JOIN ObrasDelegaciones ON Obras.Id_Obra = ObrasDelegaciones.Id_Obra
WHERE (((Obras.Id_Obra)=[ObrasDelegaciones].[Id_Obra]));
(También la he probado sin la sentencia "Obras.Id_Obra" de la primera línea y no funciona.
Soy Administrador, propietario y la tabla permite modificaciones.

2 respuestas

Respuesta
1
no sé si te servirá pero...
Entiendo que entre la tabla obras delegaciones y obras hay una relación de uno a varios.
Alguna vez me ha pasado que al hacer la consulta el campo id_obra (que une ambas) he seleccionado el de la tabla obras, en vez del de la tabla obras delegaciones.
Si es así, no te deja eliminarlo porque el campo id_obra que quieres borrar es el de la relación "uno" y tiene que ser el de la tabla "varios".
no sé si te he ayudado.
Ya está solucionado. He probado a eliminar una relación que arrastraba de atrás y no valía y el problema se ha solucionado. Gracias por la orientación sobre las relaciones.!
Un saludo
Respuesta
1
En vez de hacer una consulta con INNER JOIN , puedes hacer lo siguiente
DELETE * from Obras where id_Obra =(select distinct id_obra from Obras_Delegaciones)
Así estarías especificando una sola tabla a borrar y el segundo select identifica el Id_Obras que quieres Eliminar
Espero que esto te sirva
Cualquier cosa estoy a su disposición
Atentamente. Fpintod

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas