none
Deletar com parâmetros relacionados RRS feed

  • 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.

    terça-feira, 12 de agosto de 2008 13:41

Respostas

  • Fernando,

     

    Segue um exemplo:

    Code Snippet

    declare @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 @compras

     

    delete @compras

    from @compras co

    inner join @cadastro ca

    on co.nome = ca.nome

     

    select * from @compras

     

     



    Um abraço,

    Raul Santos

    terça-feira, 12 de agosto de 2008 14:14
  • 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 Compras

    FROM Compras INNER JOIN Cadastro

    ON Compras.Nome = Cadastro.Nome

    WHERE Nome = 'UmNome'

     

     

    As cláusulas WHERE são opcionais...

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 12 de agosto de 2008 14:16

Todas as Respostas

  • Fernando,

     

    Segue um exemplo:

    Code Snippet

    declare @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 @compras

     

    delete @compras

    from @compras co

    inner join @cadastro ca

    on co.nome = ca.nome

     

    select * from @compras

     

     



    Um abraço,

    Raul Santos

    terça-feira, 12 de agosto de 2008 14:14
  • 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 Compras

    FROM Compras INNER JOIN Cadastro

    ON Compras.Nome = Cadastro.Nome

    WHERE Nome = 'UmNome'

     

     

    As cláusulas WHERE são opcionais...

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 12 de agosto de 2008 14:16
  • Sim Fernando,

     

    Isso eh possivel!

    Basta utilizar os comandos para relacionamento das tabelas, os chamados JOINs.

     

    Exemplo:

     

    Code Snippet

    DELETE Compras

    FROM Compras INNER JOIN Cadastros

        ON Cadastros.Nome = Compras.Nome

     

     

     

    Qualquer duvida esta a disposicao.

     

    [ ]s.

    terça-feira, 12 de agosto de 2008 14:16
  • Fernando,

     

    Veja se estes exemplos ajudam:

     

    ***SQL Server 2005***

     

    Code Snippet

    CREATE 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 VALUES

    GO 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 TABELA1

     

    SELECT * FROM TABELA2

     

    SELECT * FROM TABELA3

    Go

     

    Delete from Tabela2

    Where Codigo In(Select Codigo From Tabela1 Where Codigo =2 )

    Go

     

    Delete from Tabela2

    From Tabela2 T2 Inner Join Tabela3 T3

    On T2.Codigo = T3.Codigo

    Go

     

    Select * from tabela2

     

    Select * from tabela3

     

     

     

    ***SQL Server 2000***

     

    Code Snippet

    CREATE 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 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

    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 TABELA1

     

    SELECT * FROM TABELA2

     

    SELECT * FROM TABELA3

    Go

     

    Delete from Tabela2

    Where Codigo In(Select Codigo From Tabela1 Where Codigo =2 )

    Go

     

    Delete from Tabela2

    From Tabela2 T2 Inner Join Tabela3 T3

    On T2.Codigo = T3.Codigo

    Go

     

    Select * from tabela2

     

    Select * from tabela3

     

     

     

     

    terça-feira, 12 de agosto de 2008 14:19