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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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