AJUDA NA SQL...

FERDEAD 25/07/2009 13:27:19
#317829
Olá !

tenho uma aplicação para supermercados, e o banco de dados já está grande, contendo + de 70 megas...
também, devido ao grande número de registros dos cupons e itens de cupons, a aplicação começa a ficar um pouco lenta...

portanto, gostaria de excluir todos os cupons que forem [Ô]venda a vista[Ô], e também os itens destes cupons, que estão em duas tabelas diferentes.

tabela Cupom:
codigo, codcaixa, codvendedor, data, dinheiro, cheque, ticket, fiado, etc...

tabela CupomItem:
codcupom, coditem, codbarras, quantidade, valorunit, etc...

e tem mais um problema... gostaria de excluir apenas os cupons que não constarem na tabela ContasReceber, para uma eventual consulta posteriormente...

tabela ContasReceber:
Codigo, data, descricao, valor, codcupom, pago, etc...

bom, então tinha que fazer + ou - assim...
excluir todos os Cupons que não tivesse na tabela ContasReceber, e excluir todos os CuponsItems que não existir na tabela de cupons...

como ficaria isso ??
TECLA 25/07/2009 14:42:18
#317836
Tente algo mais ou menos assim:

DELETE FROM cupom 
WHERE NOT EXITS
(SELECT * FROM contasreceber WHERE id=999)
MARCELO.TREZE 26/07/2009 16:43:45
#317904
primeiro em qual campo de ambas as tabelas, se identifica Qual é [Ô]Venda a Vista[Ô]

eu indicaria desta forma

DELETE FROM cupom WHERE TipoPgto = [Ô]Venda a Vista[Ô] And Not Exist (SELECT * FROM contasreceber WHERE contasreceber.codcupom = cupom.codigo)


e

DELETE FROM cupomitem WHERE TipoPgto = [Ô]Venda a Vista[Ô] And Not Exist (SELECT * FROM contasreceber WHERE contasreceber.codcupom = cupomitem.codcupom)


isto supondo que nas tabelas que exista um campo chamado [Ô]TipoPgto[Ô] que indica o tipo de pagamento

ou mais ou menos isto faça um backup da banco de dados entes de efetuar os testes


Tópico encerrado , respostas não são mais permitidas