[CONSULTA SQL] PARA ACHAR NAO EXISTENTES

VBALLAN 15/07/2013 10:28:38
#426040
BOM DIA, SENHORES

ALGUéM PODERIA ME AJUDAR COM UMA CONSULTA QUE, BASEADA EM UMA RELAÇÃO DE TABELAS (DUAS) APRESENTE APENAS OS VALORES QUE EXISTE EM UMA DELAS QUE NÃO EXISTA NA OUTRA?

VALEU!!!
JESUEL.OLIVEIRA 15/07/2013 11:21:23
#426048
Amigo, VBALLAN

Use.

   
SELECT store_type FROM stores
WHERE EXISTS (SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type);
VBALLAN 15/07/2013 12:45:50
#426057
Amigo Jesuel,

Obrigado pela resposta.

Tentei usar aqui no Access, mas não deu certo.

Veja bem, preciso que ele compare as tabelas [Ô]Base[ô] com a [Ô]Mer[Ô] usando como critério os campos: geografia, cidade e título (que existem nas duas tabelas) e só me traga as linhas que não contem na tabela Base.
VBALLAN 15/07/2013 16:41:06
#426079
Alguém ai sabe?
VBALLAN 15/07/2013 16:53:56
#426081
Barros,

Testando aqui.

Inseri no NOT IN mais critérios como o cidade e Titulo pois eles podem se repetir.

Está demorando para abrir a consulta, é normal? tenho mais de 40 mil linhas em cada tabela.

Valeu!
VBALLAN 16/07/2013 08:32:47
#426089
Nada?
JCARLOS 16/07/2013 09:08:40
#426094
Resposta escolhida
SELECT * FROM Tb_A LEFT OUTER JOIN
Tb_B ON Tb_A.cdUnidGestora = Tb_B.cdUnidGestora AND Tb_A.dtAno = Tb_B.dtAno AND Tb_A.nrCCorrente = Tb_B.nrCCorrente
WHERE (Tb_B.dtAno IS NULL)

Obs: Ler TB_A, ligando com TB_B, selecionando o que for null na TB_B, ou seja o que não tiver correspondente na Tb_B
VBALLAN 16/07/2013 09:38:58
#426096
JCARLOS,

Cara parece que deu certo. Ainda tenho uma dúvida, como retorio os dados da TB_B que vem na consulta. Preciso só dos dados da TB_A.

Como é no ACCESS ele é bem tenso de fazer.

Ainda preciso validar mas acredito que está sendo isso mesmo.

Aguardo o retorno da dúvida para fechar o tópico.

Abraços. e Obrigado por enquanto.
JCARLOS 16/07/2013 10:06:05
#426097
é Só trocar o Select * por Select Tb_A.Campo1,Tb_A.Campo2,Tb_A.Campo3,Tb_A.Campo4 ........
Aliás, é uma boa prática sempre indicar os campos que se deseja, evitar sempre o * que melhora a performance.
Abraços.
FILMAN 16/07/2013 11:08:42
#426109
Tente umas dessas maneiras verifica se te ajuda

SELECT * FROM TB_PRIMEIRA WHERE CODIGO > 100
EXCEPT
SELECT * FROM TB_SEGUNDA WHERE CODIGO > 100


ou

SELECT * 
FROM TB_PRIMEIRA P
LEFT JOIN TB_SEGUNDA S ON (P.CODIGO = S.CODIGO)
WHERE P.CODIGO > 100


ou

SELECT * 
FROM TB_PRIMEIRA P
WHERE NOT EXISTS (
SELECT *
FROM TB_SEGUNDA S
WHERE P.CODIGO = S.CODIGO
)
AND P.CODIGO > 100



Espero ter ajudado
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas