Select Específico - SQL
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.
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.
Alex Fonseca
Curtidas 0
Melhor post
Isaac Jose
19/02/2015
no lugar de inner join utilize left join
a comparação tambem pode ser feita com not in (campo) o inner traz tudo ..
a comparação tambem pode ser feita com not in (campo) o inner traz tudo ..
GOSTEI 1
Mais Respostas
Alex Fonseca
19/02/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.
As outras linhas tambem não podem aparecer, se em uma das linhas o status estiver como Cancelado.
GOSTEI 0
Isaac Jose
19/02/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.
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.
GOSTEI 1
Alex Fonseca
19/02/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 :)
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 :)
GOSTEI 0
Isaac Jose
19/02/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
e vc nao precisa fazer isso coloca status = 29
e pode ir postando se souber ajudo..ou tento rsr
GOSTEI 1
Alex Fonseca
19/02/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 :(
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 :(
GOSTEI 0
Isaac Jose
19/02/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
posta um top 10 de cada tabela
GOSTEI 1
Isaac Jose
19/02/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
posta um top 10 de cada tabela
GOSTEI 1
Alex Fonseca
19/02/2015
O erro estava em uma das tabelas mesmo, obrigado amigo!!! :)
GOSTEI 0
Isaac Jose
19/02/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 .
abraços .
GOSTEI 0