Como fazer este select ?

06/03/2006

Aplicação com banco de dados FireBird,

Comparar duas tabelas:

Como retornar os registros que existe na tabela1 e não exite na Tabela2

Tipo:
Select Campos 
from Tabela1 join Tabela2
on Tabela1.id_Tabela2 = Tabela2.id_Tabela2 
Where ...


Se alguem puder me ajudar eu agradeço !!!!!


Fabiano Góes

Respostas

06/03/2006

Martins

[quote:23c4b04688=´Fabiano Góes´]Aplicação com banco de dados FireBird,

Comparar duas tabelas:

Como retornar os registros que existe na tabela1 e não exite na Tabela2

Tipo:
Select Campos 
from Tabela1 join Tabela2
on Tabela1.id_Tabela2 = Tabela2.id_Tabela2 
Where ...


Se alguem puder me ajudar eu agradeço !!!!![/quote:23c4b04688]

Não fiz nenhum teste, pois não estou com nenhuma ferramenta aqui, apenas um PC com win98+office e mais nada, hehe...

Mas tente assim:
Select Campos From Tabela1 where Tabela1.Id_Tabela not in (Select Id_Tabela2 from Tabela2)


Boa sorte!!!


Responder Citar

06/03/2006

Motta

Exemplo : USUARIOS SEM POSTS

SELECT *
FROM USUARIO
WHERE NOT EXISTS (SELECT NULL
                               FROM POSTS
                               WHERE USUARIO.CODUSU = POST.CODUSU)



Responder Citar

07/03/2006

Martins

Exemplo : USUARIOS SEM POSTS
SELECT *
FROM USUARIO
WHERE NOT EXISTS (SELECT NULL
                               FROM POSTS
                               WHERE USUARIO.CODUSU = POST.CODUSU)


Funciona tb, valew [b:1b66e56370]Motta[/b:1b66e56370]!!!


Responder Citar

07/03/2006

Fabiano Góes

ALGUEM PODE CORRIGIR ESTE MEU SELECT ???

SELECT E.compe_des, E.banco_des, E.agencia_des, E.conta_des,
       E.numero_doc, E.valor
FROM arq_ent_cust1_07032006_074_2 E JOIN arq_proc_cust1_07032006_074_2 P
ON E.id_previa = P.id_previa
WHERE E.numero_doc  NOT IN (SELECT P.cheque  FROM arq_proc_cust1_07032006_074_2 P) AND
      E.banco_des   NOT IN (SELECT P.banco   FROM arq_proc_cust1_07032006_074_2 P) AND
      E.agencia_des NOT IN (SELECT P.agencia FROM arq_proc_cust1_07032006_074_2 P)



Responder Citar

07/03/2006

Martins

Primeiramente o q está acontecendo? Não lhe é retornado nada ou dá uma mensagem de erro?

Não tenho o Firebird aqui, mas acho q vc deveria tentar assim.

SELECT E.compe_des, E.banco_des, E.agencia_des, E.conta_des, 
       E.numero_doc, E.valor 
FROM arq_ent_cust1_07032006_074_2 E Left JOIN arq_proc_cust1_07032006_074_2 P 
ON E.id_previa = P.id_previa 
WHERE E.numero_doc  NOT IN (SELECT P.cheque  FROM arq_proc_cust1_07032006_074_2) AND 
      E.banco_des   NOT IN (SELECT P.banco   FROM arq_proc_cust1_07032006_074_2) AND 
      E.agencia_des NOT IN (SELECT P.agencia FROM arq_proc_cust1_07032006_074_2) 



Responder Citar

08/03/2006

Emerson

talvez você deva usar OR no lugar de AND:
SELECT
  E.compe_des, E.banco_des, E.agencia_des,
  E.conta_des, E.numero_doc, E.valor
FROM
  arq_ent_cust1_07032006_074_2 E
JOIN
  arq_proc_cust1_07032006_074_2 P ON (E.id_previa = P.id_previa)
WHERE
  E.numero_doc  NOT IN (SELECT cheque  FROM arq_proc_cust1_07032006_074_2) OR
  E.banco_des   NOT IN (SELECT banco   FROM arq_proc_cust1_07032006_074_2) OR
  E.agencia_des NOT IN (SELECT agencia FROM arq_proc_cust1_07032006_074_2)



Responder Citar