SQL Server - Borrar filas de una tabla con referencia a otra

 
Vista:
sin imagen de perfil

Borrar filas de una tabla con referencia a otra

Publicado por DANIEL (4 intervenciones) el 21/10/2016 15:39:21
Hola,
tengo un problemilla que no se como solucionar.

Tengo dos tablas. La tabla 1 con una columna que se llama Fabricantes_id. Y la tabla 2 tiene mas columnas y tambien una de las columnas se llama Fabricantes_id.

Pues bien, quiero borrar todas las filas de la table 1 que contengan un valor en Fabricantes_id que este no se encuentre en la columna de fabricantes_id de la tabla 2. Es decir comparar los valores de la columna fabricantes_id de ambas tablas y los que no se encuentren en la tabla 2, borrar las filas de la tabla 1.

Se que seria algo como:

DELETE FROM tabla 1 WHERE fabricantes_id ......................


Pero me armo un jaleo tremendo, no se si con NOT EXISTS, con un JOIN.........

Espero me puedan ayudar y espero haberme explicado bien.

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 Wilfredo Patricio Castillo
Val: 268
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Wilfredo Patricio Castillo (189 intervenciones) el 21/10/2016 18:46:38
Algo así como

Delete from tabla1 where Fabricante_id not exists (Select Frabricante_id From Tabla2)

Algo así necesitas?.

Saludos cordiales,
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Isaias (4558 intervenciones) el 21/10/2016 20:57:39
Opssssss, soy del grupo anti IN(), creo que seria mejor
1
2
3
DELETE tablax
FROM tablax inner join tablaz
on tablax.id = tablaz.id
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 268
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Wilfredo Patricio Castillo (189 intervenciones) el 21/10/2016 21:32:22
Todo un maestro Isaías, pero quiere eliminar de tabla1 los registros que no estén en tabla2, cómo sería allí maestro?.

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

Borrar filas de una tabla con referencia a otra

Publicado por Dani (4 intervenciones) el 22/10/2016 15:48:38
Hola,
antes de nada gracias por vuestra ayuda. He seguido tu ejemplo Wilfredo, pero me indica los siguientes errores:


Palabra clave no reconocida. (near "not" at position 49)
Palabra clave no reconocida. (near "exists" at position 53)
Símbolo (token) inesperado. (near "(" at position 60)
Se encontró una nueva declaración, pero no hay delimitador entre éste y el anterior. (near "Select" at position 61)
Corchete de cierre inesperado. (near ")" at position 98)
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 268
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Wilfredo Patricio Castillo (189 intervenciones) el 23/10/2016 06:06:31
Bueno, si no tienes la idea, entonces para que te funcione tendría que ser así:

delete from tabla1 where Fabricante_Id not in(select Fabricante_Id from tabla2)

Saludos cordiales,
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

Borrar filas de una tabla con referencia a otra

Publicado por Daniel (4 intervenciones) el 23/10/2016 10:49:09
Hola,
esta si ha funcionado, pero.... no ha borrado nada. 0 filas afectadas.

Gracias por vuestra ayuda.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Isaias (4558 intervenciones) el 23/10/2016 22:00:14
1
2
3
4
delete tablax
from tablax
WHERE
NOT EXISTS(select * from tablaz where tablax.id = tablaz.id)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Borrar filas de una tabla con referencia a otra

Publicado por Daniel (4 intervenciones) el 25/10/2016 09:25:26
Gracias Isaias, este ha ido perfecto!
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Isaias (4558 intervenciones) el 25/10/2016 23:44:01
De nada compañero
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

Borrar filas de una tabla con referencia a otra

Publicado por angel (1 intervención) el 13/03/2020 01:43:18
MUUUY BRILLANTE
GRACIAS
que inteligencia
Saludos
Bendiciones!!!!!
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Borrar filas de una tabla con referencia a otra

Publicado por Isaias (4558 intervenciones) el 13/03/2020 06:20:08
Tampoco, tampoco, todos los dias aprendemos algo nuevo (aun a mi edad), 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