Usuário com melhor resposta
Deletar com parâmetros relacionados

Pergunta
-
Oi Galera,
Gostaria de saber como faço para deletar os dados de uma tabela com parametros em outra.
Vou dar um exemplo: tenho que deletar os dados da tabela compras onde o campo nome deve ser igual ao campo nome da tabela cadastro, mas quero deletar só da tabela compras.
Valeu.
Respostas
-
Fernando,
Segue um exemplo:
Code Snippetdeclare
@compras table (nome varchar(10))insert
into @compras values ('Raul')insert
into @compras values ('Pedro')insert
into @compras values ('João')declare
@cadastro table (nome varchar(10))insert
into @cadastro values ('Raul')insert
into @cadastro values ('João')select
* from @comprasdelete
@comprasfrom
@compras coinner
join @cadastro caon
co.nome = ca.nomeselect
* from @compras
Um abraço,Raul Santos
-
Bom Dia,
Seguem as sugestões...
Code Snippet-- Via subquery (ANSI Compliance)
DELETE
FROM Compras WHERE Nome IN(
SELECT Nome FROM Cadastro WHERE Nome = 'UmNome')-- Via Join (Sintaxe Proprietária)
DELETE
FROM ComprasFROM
Compras INNER JOIN CadastroON
Compras.Nome = Cadastro.NomeWHERE
Nome = 'UmNome'As cláusulas WHERE são opcionais...
[ ]s,
Gustavo
Todas as Respostas
-
Fernando,
Segue um exemplo:
Code Snippetdeclare
@compras table (nome varchar(10))insert
into @compras values ('Raul')insert
into @compras values ('Pedro')insert
into @compras values ('João')declare
@cadastro table (nome varchar(10))insert
into @cadastro values ('Raul')insert
into @cadastro values ('João')select
* from @comprasdelete
@comprasfrom
@compras coinner
join @cadastro caon
co.nome = ca.nomeselect
* from @compras
Um abraço,Raul Santos
-
Bom Dia,
Seguem as sugestões...
Code Snippet-- Via subquery (ANSI Compliance)
DELETE
FROM Compras WHERE Nome IN(
SELECT Nome FROM Cadastro WHERE Nome = 'UmNome')-- Via Join (Sintaxe Proprietária)
DELETE
FROM ComprasFROM
Compras INNER JOIN CadastroON
Compras.Nome = Cadastro.NomeWHERE
Nome = 'UmNome'As cláusulas WHERE são opcionais...
[ ]s,
Gustavo
-
Sim Fernando,
Isso eh possivel!
Basta utilizar os comandos para relacionamento das tabelas, os chamados JOINs.
Exemplo:
Code SnippetDELETE Compras
FROM Compras INNER JOIN Cadastros
ON Cadastros.Nome = Compras.Nome
Qualquer duvida esta a disposicao.
[ ]s.
-
Fernando,
Veja se estes exemplos ajudam:
***SQL Server 2005***
Code SnippetCREATE
TABLE TABELA1 (CODIGO INT IDENTITY(1,1))Go
CREATE
TABLE TABELA2 (CODIGO INT IDENTITY(1,1),CODTABELA1
INT)Go
Create
TABLE TABELA3 (CODIGO INT IDENTITY(1,1),CODTABELA1
INT,CODTABELA2
INT)INSERT
INTO TABELA1 DEFAULT VALUESGO 10
INSERT
INTO TABELA2 VALUES(1)INSERT
INTO TABELA2 VALUES(2)INSERT
INTO TABELA2 VALUES(3)Go
INSERT
INTO TABELA3 VALUES(1,1)INSERT
INTO TABELA3 VALUES(2,2)INSERT
INTO TABELA3 VALUES(3,1)Go
SELECT
* FROM TABELA1SELECT
* FROM TABELA2SELECT
* FROM TABELA3Go
Delete
from Tabela2Where
Codigo In(Select Codigo From Tabela1 Where Codigo =2 )Go
Delete
from Tabela2From
Tabela2 T2 Inner Join Tabela3 T3 On T2.Codigo = T3.CodigoGo
Select
* from tabela2Select
* from tabela3***SQL Server 2000***
Code SnippetCREATE
TABLE TABELA1 (CODIGO INT IDENTITY(1,1))Go
CREATE
TABLE TABELA2 (CODIGO INT IDENTITY(1,1),CODTABELA1
INT)Go
Create
TABLE TABELA3 (CODIGO INT IDENTITY(1,1),CODTABELA1
INT,CODTABELA2
INT)INSERT
INTO TABELA1 DEFAULT VALUESINSERT INTO TABELA1 DEFAULT VALUES
INSERT INTO TABELA1 DEFAULT VALUES
INSERT INTO TABELA1 DEFAULT VALUES
INSERT INTO TABELA1 DEFAULT VALUES
INSERT INTO TABELA1 DEFAULT VALUES
INSERT INTO TABELA1 DEFAULT VALUES
INSERT INTO TABELA1 DEFAULT VALUES
Go
INSERT INTO TABELA2 VALUES(1)
INSERT
INTO TABELA2 VALUES(2)INSERT
INTO TABELA2 VALUES(3)Go
INSERT
INTO TABELA3 VALUES(1,1)INSERT
INTO TABELA3 VALUES(2,2)INSERT
INTO TABELA3 VALUES(3,1)Go
SELECT
* FROM TABELA1SELECT
* FROM TABELA2SELECT
* FROM TABELA3Go
Delete
from Tabela2Where
Codigo In(Select Codigo From Tabela1 Where Codigo =2 )Go
Delete
from Tabela2From
Tabela2 T2 Inner Join Tabela3 T3 On T2.Codigo = T3.CodigoGo
Select
* from tabela2Select
* from tabela3