Usuário com melhor resposta
Dúvidas query

Pergunta
-
Criei o select abaixo:
select b.codigo_entidade, b.razao_social, c.descricao, b.numero, a.vencimento
from entidade_doc a inner join vw_rs_entidade b on a.cod_entidade = b.id_entidade
inner join controle c on c.cod_tipo_doc = a.cod_tipo_doc
where b.tipo like '1' //A coluna tipo se refere ao tipo cliente.
and c.cod_controle like '2' or c.cod_controle like '11'
and b.id_situacao like '0' or b.id_situacao like '1'Preciso que este relatório retorne somente entidades ativas e bloqueadas ( and b.id_situacao like '0' or b.id_situacao like '1' ) e somente os documentos de alvará e anvisa ( and c.cod_controle like '2' or c.cod_controle like '11' )
Repare que no resultado está aparecendo outros outros tipos de alvará.
O que estou fazendo de errado? Qual é a forma correta?
Respostas
-
Olá,
Aparentemente a query está bem. O que poderá estar errado é a falta de parêntises, assim:
select b.codigo_entidade, b.razao_social, c.descricao, b.numero, a.vencimento from entidade_doc a inner join vw_rs_entidade b on a.cod_entidade = b.id_entidade inner join controle c on c.cod_tipo_doc = a.cod_tipo_doc where b.tipo like '1' --A coluna tipo se refere ao tipo cliente. and (c.cod_controle like '2' or c.cod_controle like '11') and (b.id_situacao like '0' or b.id_situacao like '1')
Uma melhor forma de re-escrever a query será usando IN, desta forma:
select b.codigo_entidade, b.razao_social, c.descricao, b.numero, a.vencimento from entidade_doc a inner join vw_rs_entidade b on a.cod_entidade = b.id_entidade inner join controle c on c.cod_tipo_doc = a.cod_tipo_doc where b.tipo like '1' --A coluna tipo se refere ao tipo cliente. and c.cod_controle IN ('2', '11') and b.id_situacao IN ('0', '1')
Espero ter ajudado,
Pedro Martins
Portugal
https://www.linkedin.com/in/rechousa- Sugerido como Resposta Logan Destefani Merazzi segunda-feira, 29 de abril de 2013 11:53
- Marcado como Resposta MARCOS ANTONIO BRISENO segunda-feira, 29 de abril de 2013 12:33
Todas as Respostas
-
Olá,
Aparentemente a query está bem. O que poderá estar errado é a falta de parêntises, assim:
select b.codigo_entidade, b.razao_social, c.descricao, b.numero, a.vencimento from entidade_doc a inner join vw_rs_entidade b on a.cod_entidade = b.id_entidade inner join controle c on c.cod_tipo_doc = a.cod_tipo_doc where b.tipo like '1' --A coluna tipo se refere ao tipo cliente. and (c.cod_controle like '2' or c.cod_controle like '11') and (b.id_situacao like '0' or b.id_situacao like '1')
Uma melhor forma de re-escrever a query será usando IN, desta forma:
select b.codigo_entidade, b.razao_social, c.descricao, b.numero, a.vencimento from entidade_doc a inner join vw_rs_entidade b on a.cod_entidade = b.id_entidade inner join controle c on c.cod_tipo_doc = a.cod_tipo_doc where b.tipo like '1' --A coluna tipo se refere ao tipo cliente. and c.cod_controle IN ('2', '11') and b.id_situacao IN ('0', '1')
Espero ter ajudado,
Pedro Martins
Portugal
https://www.linkedin.com/in/rechousa- Sugerido como Resposta Logan Destefani Merazzi segunda-feira, 29 de abril de 2013 11:53
- Marcado como Resposta MARCOS ANTONIO BRISENO segunda-feira, 29 de abril de 2013 12:33
-
-
Sim, também concordo! Só uso LIKE com wildcards.
Pedro Martins
Portugal
https://www.linkedin.com/in/rechousa