Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 511145
            [titulo] => Select Específico - SQL
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-02-19 12:14:00
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 348325
            [status] => A
            [isExample] => 
            [NomeUsuario] => Isaac Jose
            [Apelido] => 
            [Foto] => 
            [Conteudo] => no lugar de inner join utilize left join

a comparação tambem pode ser feita com not in (campo) o inner traz tudo .. ) )

Select Específico - SQL

Alex Fonseca
   - 19 fev 2015

Olá amigos, tenho um select que faz um join com uma tabela de histórico.
Essa tabela tem várias linhas devido a mudança de status.
Preciso que se uma das linhas seja igual a cancelado, não retorne nada.
Fiz o select abaixo, mas ele retorna as demais linhas quando coloco o status <> 'Cancelado'. Nesse caso, não deve retornar nada.
SELECT H.codigo FROM ESPELHO E
inner join HISTORICO H on H.codigo = E.codigo
where E.cod_espelho = 10 AND H.status <> 'Cancelado'
Desde já, agradeço a ajuda.

Post mais votado

Isaac Jose
   - 19 fev 2015

no lugar de inner join utilize left join

a comparação tambem pode ser feita com not in (campo) o inner traz tudo ..

Alex Fonseca
   - 19 fev 2015

Amigo ainda não funcionou, se uma das linhas tiver o status = Cancelado, nao pode trazer nada.

As outras linhas tambem não podem aparecer, se em uma das linhas o status estiver como Cancelado.

Isaac Jose
   - 19 fev 2015

SELECT E.codigo,h.codigo,e.cod_espelho,h.status, FROM ESPELHO E
left join HISTORICO H on H.codigo = E.codigo
where E.cod_espelho = 10 AND H.status not in 'Cancelado'

rode esse codigo e poste o resultado pra eu ver o que pode estar acontecendo.

Alex Fonseca
   - 19 fev 2015

Segue o resultado amigo:

codigo codigo cod_espelho COD_STATUS_PROCESSO
-------------------- -------------------- -------------------- -------------------
864277 864277 864277 29

(1 linha(s) afetadas)

Tive que trocar o finalzinho do select que vc mandou, ao invés de: H.status not in 'Cancelado' ---> coloquei H.status <> 30

30 = Cancelado
29 = Em Andamento

Se em uma das linhas tiver 30, nao pode trazer nada, porque se o espelho foi cancelado, ele não pode aparecer e a única tabela que grava o Status de Cancelado é a tabela de HISTORICO.

ps.muito obrigado por estar me ajudado ainda :)

Isaac Jose
   - 19 fev 2015

cara esta correto o resultado veio o 29 que é o que esta em andamento..
e vc nao precisa fazer isso coloca status = 29
e pode ir postando se souber ajudo..ou tento rsr

Alex Fonseca
   - 19 fev 2015

Entao, mas estou criando um relatório que deve mostrar apenas os espelhos que não foram cancelados e se eu coloco o "select" daquela maneira, ele traz uma linha, aí mesmo estando cancelado aparece no relatório.

Na verdade, preciso de um "select" que se em uma das linhas de um espelho estiver o "status = 30", não apareca nada... mas nao sei como fazer :(

Isaac Jose
   - 19 fev 2015

amigo o seu select esta correto. vc esta forçando o campo status para 29. se esta trazando quem esta com cancelado deve haver alguem errado na tabela
posta um top 10 de cada tabela

Isaac Jose
   - 19 fev 2015

amigo o seu select esta correto. vc esta forçando o campo status para 29. se esta trazando quem esta com cancelado deve haver alguem errado na tabela
posta um top 10 de cada tabela

Alex Fonseca
   - 19 fev 2015

O erro estava em uma das tabelas mesmo, obrigado amigo!!! :)

Isaac Jose
   - 19 fev 2015

por nada.. precisando e só falar. coloca resolvido neste poste pra que o pessoal não perca tempo entrando e vendo se ainda precisa de ajuda..

abraços .