none
Dúvidas query RRS feed

  • 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?

    sábado, 27 de abril de 2013 15:52

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

    sábado, 27 de abril de 2013 16:42

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

    sábado, 27 de abril de 2013 16:42
  • Deleted
    sábado, 27 de abril de 2013 18:01
  • Sim, também concordo! Só uso LIKE com wildcards.

    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    sábado, 27 de abril de 2013 18:03