Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 497646
            [titulo] => Consulta SQL não retorna resultados excluidos Usando NOT IN  ou NO Exists
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-10-13 13:52:19
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 332951
            [status] => A
            [isExample] => 
            [NomeUsuario] => Fabiano Carvalho
            [Apelido] => FaabiianooC
            [Foto] => 332951_20140826143737.jpg
            [Conteudo] => Se voce precisa retornar o que está em uma tabela e não está na outra, use left join
[code]select a.* from tempTab_funcionários as a
left join Tab_funcionários as b
on a.Idfuncionário = b.Idfuncionário
where b.Idfuncionário is null[/code]

isso ira retornar todos os registros da tabela tempTab_funcionários que não estão na Tab_funcionários ) )

Consulta SQL não retorna resultados excluidos Usando NOT IN ou NO Exists

Wesley Maia
   - 13 out 2014

Olá tenho a tabela Tab_funcionários com a Coluna IdFuncionário com valores de 1 a 999. Como vários registro são delatados desta tabela e posteriormente eu os reaproveito criei uma tabela tempTab_funcionários com a Coluna IdFuncionário com uma sequencia de valores completo de 1 a 999 para fazer a comparação com a Primeira.
usando este select:
select * from tempTab_funcionários
where not exists (select * from Tab_funcionários
where tempTab_funcionários.Idfuncionário <> Tab_funcionários.IdFuncionário)
porem ele não retorna valores, sendo que a olho nu percebo que existem varios intervalos que se encaixam nesta solicitação, mas parece que ao serem excluidas as linhas ainda assim constam como valores inseridos?
Por que será? alguem me da uma força por favor?

Post mais votado

Faabiianooc
   - 13 out 2014

Se voce precisa retornar o que está em uma tabela e não está na outra, use left join
#Código

select a.* from tempTab_funcionários as a
left join Tab_funcionários as b
on a.Idfuncionário = b.Idfuncionário 
where b.Idfuncionário  is null


isso ira retornar todos os registros da tabela tempTab_funcionários que não estão na Tab_funcionários

Din
|
MVP
Pontos: 45
    13 out 2014

voce está retornando muitas colunas quando usa o " * ".

A maneira que o fabiano te informou é a mais correta, porém tem dessa forma

#Código

select * from tempTab_funcionários
where idFuncionario not exists (select idFuncionario from Tab_funcionários
where tempTab_funcionários.Idfuncionário <> Tab_funcionários.IdFuncionário)


olhe que eu coloquei um campo (coluna) chamado de idFuncionario.

Wesley Maia
   - 13 out 2014

Fabiano realmente não tinha pensado na possibilidade de usar o left join.. batata... retornou os itens da comparação.
Din o seu retornou o mesmo resultado apos alguns acertos...

select * from tempTab_funcionários r
where r.IdFuncionário not in (select v.IdFuncionário from Tab_funcionários v
where r.Idfuncionário = v.IdFuncionário)

Obrigado pela a ajuda de vocês foi de grande aproveitamento.

Din
|
MVP
Pontos: 45
    15 out 2014

Quem bom que deu certo! Abraços