SQL - Localizar dados não coincidente

5 respostas
C

Olá Pessoal ! Preciso fazer um consulta que me retorne os dados não coincidentes entre duas tabelas, pois trabalhos com dados georreferenciados.

Preciso pegar os dados da tabela 2 que não existam na 1

Ex.:

TABELA 1

LAT | LONG | DATA |
-1 0 20082006
-2 0 20082006

TABELA 2

LAT | LONG | DATA |
-1 0 20082006
-1 0 01041997
-3 0 01041997

RESULTADO

LAT | LONG | DATA |
-1 0 01041997
-3 0 01041997

Desde já, grato pela ajuda !

5 Respostas

D

Vc deve fazer um select da primeira tabela recuperando todos os valores…
com esse select vc vai montar uma String q. será o paramêtro para o segundo select…
algo do tipo:

String param = MeuDAO.getValores();
Coordenadas[] coord = MeuDAO.getDiferenca(param);

onde o parametro da segundo select deve ficar como:
"where DATA not in [data1,data2,data3,data4…dataN] "
consulta a sintax sql do banco de dados que vc está usando!

t+

C

To com problemas pois preciso fazer em sql mesmo…

N

Olá, amigo,

você terá de usar JOINS, veja no site do w3schools:
http://www.w3schools.com/sql/sql_join.asp

Não sou nenhum ás do SQL, mas acredito que um LEFT JOIN resolveria seu problema.

Ficaria algo do tipo:

SELECT TABELA2.CAMPO
FROM TABELA1
LEFT JOIN TABELA2
ON TABELA1.KEY_TABELA1=TABELA2.FOREIGNKEY_TABELA1

Paz!

L

é, como o NotANumber disse, da para resolver com joins…

tenta esse

select t2.* from tabela2 t2
left outer join tabela1 t1 on t2.campoTabela1 = t1.campoTabela2
where t1.campoTabela2 is null
C

Celso,

No PostgreSQL vc pode fazer assim:

select * from clientes c EXCEPT  select * from clientes c where c.tipo='F';

No Oracle assim:

select * from clientes c MINUS select * from clientes c where c.tipo='F';

@braços,

Criado 24 de setembro de 2007
Ultima resposta 30 de out. de 2007
Respostas 5
Participantes 5