Delete - Ajuda com query para deleção [Resolvido]

7 respostas
RichardVaugh

Pessoal ! Boa noite !

tenho duas tabelas
cujos nomes e contexto não são tão usuais
então transformei em dois exemplos (levei meia hora) !

TABLE CAIXA
numero_caixa
numero_container

TABLE PRODUTO
numero_caixa
numero_produto

Acontece que preciso deletar todos os produtos que tenha um determinado numero_produto cuja caixa
esteja em um container com determinado numero_container.
Enfim, só tenho numero_produto e numero_container para deletar um produto !

Não sei como fazer isso em um delete !

Se alguém tiver uma dica de algo pra eu pesquisar e estudar no delete já está ótimo.
Eu tenho pouco conhecimento de SQL, sempre treinei coisas básicas aliás.

Muito obrigado !

7 Respostas

F

Olá Richard;

Tente isto:

DELETE Produto WHERE Numero_Caixa IN (SELECT Numero_Caixa FROM Caixa WHERE Numero_Container = '123456')

Creio que deva ser isto, ou algo parecido!

[]'s

Marco Aurélio

jpcasati
DELETE FROM produto WHERE produto.numero_caixa = caixa.numero_caixa AND caixa.numero_container = '123' AND produto.numero_produto = '456'
RichardVaugh

obrigado fanama !

Acontece que dessa forma ele vai deletar todos os produto de uma caixa !
pois ele apenas está verificando o container e não o numero_produto, então quando acha a caixa vai acabar deletando tudo que estiver nela, ou seja, todos os produtos !

Poxa, alguém tem alguma idéia de como posso fazer ?

Obrigado !!!

RichardVaugh

Obrigado jpcasati !

No meu banco (HSQLDB) ele acusou a coluna caixa.numero_caixa não encontrada.
Será que tem sintaxe diferente ?
Que estranho !!!

Quando eu coloco valores que não existem ele não dá erro.
Talvez seja pela ordem de análise da query que ele faz…sei lá !

Alguém sabe algo ?

Obrigado !!

R

use o seguinte

delete from produtos where produtos.numero_caixa in(select numero_caixa from caixa where caixa.numero_container = 12345 )

RichardVaugh

rictecinf:

use o seguinte

delete from produtos where produtos.numero_caixa in(select numero_caixa from caixa where caixa.numero_container = 12345 )

rictecinf, se eu usar esse comando ele vai deletar todos da caixa também.

A solução que encontrei foi essa:

delete from produto
where produto.numero_caixa in (select numero_caixa from caixa where numero_container = ‘?’ )
and produto.numero_produto = ‘?’

RichardVaugh

Muito Obrigado a todos !

Criado 10 de fevereiro de 2009
Ultima resposta 11 de fev. de 2009
Respostas 7
Participantes 4