Códigos de um cadastro que não estão em outro

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Códigos de um cadastro que não estão em outro

Mensagem por JoséQuintas »

Acabei de precisar....
Tem lá o cadastro de formas de pagamento, e a indicação no cadastro do cliente.
(Na época não tinha validação na exclusão, e apagaram formas de pagamento em uso)

Como listar as formas de pagamento que ficaram sem cadastro?

1) a informação está no cadastro, então...

SELECT CDFORPAG FROM JPCADASTRO

2) não preciso repetido, então...

SELECT DISTINCT CDFORPAG FROM JPCADASTRO

3) O que não tem no outro cadastro
duas opções:

a) comparar com a lista do outro cadastro
SELECT DISTINCT CDFORPAG FROM JPCADASTRO WHERE NOT CDFORPAG IN ( SELECT IDFORPAG FROM JPFORPAG )

b) idem, mostrando o que não tem equivalência
select distinct cdforpag from jpcadastro
left join jpforpag on jpforpag.idforpag = jpcadastro.cdforpag
where
jpforpag.idforpag is null


*** NAO DEU CERTO *** relacionar e mostrar diferentes *** NAO DEU CERTO ***
select distinct cdforpag from jpcadastro
left join jpforpag on jpforpag.idforpag = jpcadastro.cdforpag
where
jpcadastro.cdforpag <> jpforpag.idforpag

Pois é... várias opções de fazer a mesma coisa.

E como se usa isso no programa?

Código: Selecionar todos

WITH OBJECT oRs := oConexao:Execute( "SELECT DISTINCT CDFORPAG FROM JPCADASTRO WHERE NOT CDFORPAG IN ( SELECT IDFORPAG FROM JPFORPAG )" )
   DO WHILE ! :Eof()
      ? :Fields( "IDFORPAG" ):Value
      :MoveNext()
   ENDDO
   :Close()
ENDWITH
Mas e se quiser testar fora do programa?
HeidiSQL
Lembra o DBASE e DBFs, mas... comandos SQL
mysql.png
Já comentei aqui:
O DBASE era algo parecido com isso, digitar e mostrar o resultado.
Com certeza, todos aqui já usaram o DBASE, então.... é quase como voltar ao passado... como um DBASE que recebeu mais opções.
A principal diferença é que agora o aplicativo também pode usar.

Conclusão:
Usar SQL é voltar ao passado, é um recomeço das coisas.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Marcos Kieron
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 14 Jan 2020 10:29
Localização: São Paulo/SP

Códigos de um cadastro que não estão em outro

Mensagem por Marcos Kieron »

Faça uma rotina que "varra" o cadastro, o que não estiver na outra tabela, crie de novo e passe a validar, simples assim
Responder