Quem nunca precisou
comparar registros entre duas tabelas ?
comparar registros entre duas tabelas ?
Exemplo: pedidos que
não tem item cadastrado ou Itens que não possuem Pedido.
não tem item cadastrado ou Itens que não possuem Pedido.
Pois é, ao
invés de criar um programa (while…for) e varrer o banco inteiro,
podemos criar uma consulta SQL (Consulta Estruturada).
invés de criar um programa (while…for) e varrer o banco inteiro,
podemos criar uma consulta SQL (Consulta Estruturada).
Vou dar um exemplo
simples de uma consulta SQL; Imagine sua tabela de pedidos (chave
primaria NoPEDIDO) com 20.000 registros e uma tabela que contem os
itens do pedido (chave primária IdPEDIDO) com 120.000 registros.
(Pois cada pedido contém “n” registros)
simples de uma consulta SQL; Imagine sua tabela de pedidos (chave
primaria NoPEDIDO) com 20.000 registros e uma tabela que contem os
itens do pedido (chave primária IdPEDIDO) com 120.000 registros.
(Pois cada pedido contém “n” registros)
Precisamos saber se
todos os 20.000 pedidos contém itens, caso exista pedidos sem item,
vamos apagá-los.
todos os 20.000 pedidos contém itens, caso exista pedidos sem item,
vamos apagá-los.
Para CONSULTAR, use
a seguinte SQL:
a seguinte SQL:
Select * from
TbPEDIDO where NoPEDIDO not in (select IdPEDIDO from TbITEM)
Entendendo a
consulta acima:
consulta acima:
Nome da tabela de
pedido: TbPEDIDO
pedido: TbPEDIDO
Nome do campo
chave: NoPEDIDO
chave: NoPEDIDO
Nome da Tabela item
do pedido: TbITEM
do pedido: TbITEM
Nome do campo
chave: IdPEDIDO
chave: IdPEDIDO
O resultado da
consulta vai exibir TODOS os pedidos que NÃO CONTÉM ITEM (com a
chave igual do pedido.)
consulta vai exibir TODOS os pedidos que NÃO CONTÉM ITEM (com a
chave igual do pedido.)
Para DELETAR, use a
seguinte SQL:
seguinte SQL:
delete from TbPEDIDO
where NoPEDIDO not in (select IdPEDIDO from TbITEM)
O resultado da
consulta vai APAGAR TODOS os pedidos que NÃO CONTÉM ITEM.
consulta vai APAGAR TODOS os pedidos que NÃO CONTÉM ITEM.
Itens Órfãos:
Itens órfãos são
itens que não possuem pedidos (por algum motivo foi deletado ou
corrompido)
itens que não possuem pedidos (por algum motivo foi deletado ou
corrompido)
Consulta de Itens
órfãos:
órfãos:
select * from TbITEM
where IdPEDIDO not in (select NoPEDIDO from TbPEDIDO)
Deletar itens
órfãos:
órfãos:
delete from TbITEM
where IdPEDIDO not in (select NoPEDIDO from TbPEDIDO)
Se este post foi útil para você, ajude a divulgar meu trabalho! Curta minha página no facebook !
preciso fazer um consulta de clientes que nao compram determinados produto , esta muito lento pois estou fazendo com while e next
devo ter uns 200 mil item , os produtos nao sao muitos pois são por representada maximo uns 500 cada representada as vezes muito menos uns 50 vi varios mais nenhum funciona ate trava
tenho pedido
cliente
representada
datapedido
–
produto
produtocodigo
–
item
representada
cliente
produto