[Resolvido] Delete em sql - Inner Join

4 respostas
mysqlsqlserversql
J

Como é a sintaxe de uma query usando Inner Join delete em sql, para comparar código de duas tabelas e excluir ser for igual?

Tabela itemVenda. na tabela itemvenda foi registrado uma venda cuja, o código é 4. Para executar o estorno, se for o caso, o usuário pode remover.

Tabela controleCaixa. Quando estornar, o registro da tabela itemvenda será removido e ao mesmo tempo será removido, o registro cujo codDoc = 4. Este código do documento é gerado quando a venda é finalizada.

Segue a estrutura da tabela. Preciso de uma query usando Inner Join delete em sql, para comparar código de duas tabelas e excluir ser for igual.

4 Respostas

Jonathan_Medeiros

Basta ler e montar conforme precisa!

A

Cada banco de dados pode ter uma sintaxe diferente pra fazer isso.

Uma maneira que funciona em todos, se sua chave primária for um campo único (imagino que o campo código no seu caso) é fazer o select com inner join que identifica quais registros devem ser excluídos. Nesse select você retorna apenas a chave primária desses registros e seu delete vira apenas um DELETE com um IN no where, usando o select como sub query.

Isso deve funciona para a maioria dos dbs.

J

Obrigado, vou dar uma lida no material!

J

Abel, neste caso consegui resolver estornando um item da venda e excluir, o registro do controle do caixa deixando, só o registro na tabela venda. Resolvi utilizando Delete from controleCaixa where codDoc = 4; Eu estava com dificuldade e pensar como resgatar o código da linha corrente, mas consegui. Obrigado!

Criado 27 de maio de 2017
Ultima resposta 31 de mai. de 2017
Respostas 4
Participantes 3