SQL - Delete de una tabla según otra

 
Vista:
sin imagen de perfil

Delete de una tabla según otra

Publicado por Alfredo Perez (2 intervenciones) el 25/09/2022 01:06:34
Hola, me estoy volviendo loco con el SQL.

Resumen: tengo dos tablas relacionadas y quiero borrar los registros de una en función de un campo en la otra

Desde Acces funciona así:

DELETE cursosxcandidatos.*, cursos.activo FROM cursosxcandidatos INNER JOIN cursos ON cursosxcandidatos.idcurso = cursos.id WHERE (((cursosxcandidatos.idcandidato)=3481) AND ((cursos.activo)=1))

El significado es borrar todas las líneas de "cursosxcandidatos" que relacionan alumnos con los cursos en los que está matriculado, pero solo si está el curso activo (dato que está en la tabla "cursos")


El problema es que yo lo estoy programando en SQL contra MySQL, y poniendolo de la misma manera no me borra nada y ya no sé qué hacer, he probado muchas variantes.
¿Alguna idea o una mejor manera de hacerlo?
Gracias.
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 gilman
Val: 184
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Delete de una tabla según otra

Publicado por gilman (103 intervenciones) el 25/09/2022 08:13:28
No conozco MySQL pero esto es SQL Standard y debería funcionar:
1
2
3
4
5
6
7
DELETE FROM cursosxcandidatos
	WHERE EXISTS
		(
		SELECT 1
			FROM cursos
			WHERE cursosxcandidatos.idcandidato=3481 AND cursos.activo=1
		)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Delete de una tabla según otra

Publicado por Alfredo (2 intervenciones) el 25/09/2022 16:11:30
Perfecto, me ha funcionado a la primera.
Muchísimas gracias.

No conocía yo la estructura de "select 1 ...", me lo revisaré.
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