none
Query Sql Server com OR e AND RRS feed

  • Pergunta

  • Olá,

    Tenho uma query que preciso que os dados aparecem caso for um desses:

    SELECT * FROM [Tabela] WHERE (([Data] = @Data) OR ([Organica] = @Organica) OR ([Satus] = @Satus)) 

    Mas também que apareçam caso cumprirem todas juntas uma condição:

    SELECT * FROM [Tabela] WHERE (([Data] = @Data) AND ([Organica] = @Organica) AND ([Satus] = @Satus)) 

    Preciso juntar isso numa query só, mas não dá se eu juntar assim:

    SELECT * FROM [Tabela] WHERE (([Data] = @Data) OR ([Organica] = @Organica) OR ([Satus] = @Satus)) or (([Data] = @Data) AND ([Organica] = @Organica) AND ([Satus] = @Satus)) 



    terça-feira, 12 de março de 2019 12:41

Respostas

  • Desconfio que o parâmetro está recebendo a string 'NULL'. Para verificar se está ocorrendo isso mesmo experimente trocar por exemplo

    @Organica is null

    por

    @Organica = 'NULL'

    Se for esse o caso, acredito que seria necessário adicionar código manual para enviar null em vez da string 'NULL', ou de repente você pode usar uma string mesmo, escolhendo um valor que seja conveniente, talvez até mesmo uma string em branco/vazia.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Cambrige quarta-feira, 13 de março de 2019 13:39
    quarta-feira, 13 de março de 2019 13:28

Todas as Respostas

  • Bom dia,

    Acredito que não é necessário juntar esse trecho com todas juntas em uma condição, pois como no trecho anterior basta uma das colunas para atender a condição e está sendo utilizado o Or entre os 2 trechos, bastará que apenas uma das condições do primeiro trecho seja verdadeira para que a linha seja retornada pela query. 

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 12 de março de 2019 13:30
  • Boa tarde,

    Sim tudo bem com Or também preciso e está funcionando (qualquer uma das opções escolhida mostra o resultado). Mas também preciso só mostrar o resultado se atender as três condições juntas. 

    Exemplo1 com OR: Ser Rico ou Ser bonito ou Ser magro para mostrar o resultado basta escolher uma dessas opções. Funciona.

    Exemplo2 com AND: ele só mostra o resultado se for Rico, bonito e magro.  Isso não funciona

    Quero os dois na mesma query.

    E mais uma pergunta. Quero que a minha gridView venha na abertura da página com todos os dados e só depois que escolher as opções para filtrar.

    terça-feira, 12 de março de 2019 17:30
  • Deleted
    terça-feira, 12 de março de 2019 17:42
  • Boa tarde,

    Cambrige, se você quer uma única query que retorne hora com uma condição, hora com as 3 condições juntas, acredito que uma alternativa seja adicionar mais um parâmetro. Ex:

    SELECT * FROM [Tabela] 
    WHERE 
    ( (@AndOr = 'OR') and 
      ( ([Data] = @Data) OR ([Organica] = @Organica) OR ([Satus] = @Satus) )
    ) 
    or 
    (
      (@AndOr = 'AND') and ([Data] = @Data) AND ([Organica] = @Organica) AND ([Satus] = @Satus)
    )
    

    Sobre o GridView, acho que uma alternativa que costuma ser utilizada nesses casos é atribuir um valor padrão para o parâmetro e a adição de uma condição para esse valor padrão. Exemplo de como ficaria o filtro considerando que o valor padrão do parâmetro seja null:

    WHERE ( ([Data] = @Data) or (@Data is null) )

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 12 de março de 2019 18:25
  • Obrigado a todos, mas as 3 condições juntas não está funcionando. Está aqui na imagem onde quero colocar a minha query. À medida que o usuário vai escolhendo na comboBox ele vai filtrando. Se primeiro escolher só 2018, filtra todos os dados de 2018 e depois CA ele vai restringindo 2018 e CA e por último Executado restringe ainda mais. E no final tenho registros que atende somente a essas 3 condições escolhidas pelo usuário:

     
    quarta-feira, 13 de março de 2019 09:52
  • Deleted
    quarta-feira, 13 de março de 2019 10:51
  • Obrigado pela correção.

    É Status. Mas não funcionou. Agora só dá o resultado se escolher as 3 condições.

    Obrigado

    quarta-feira, 13 de março de 2019 11:27
  • Deleted
    quarta-feira, 13 de março de 2019 11:52
  • Sim está assim. Mas não dá.

    quarta-feira, 13 de março de 2019 12:33
  • Desconfio que o parâmetro está recebendo a string 'NULL'. Para verificar se está ocorrendo isso mesmo experimente trocar por exemplo

    @Organica is null

    por

    @Organica = 'NULL'

    Se for esse o caso, acredito que seria necessário adicionar código manual para enviar null em vez da string 'NULL', ou de repente você pode usar uma string mesmo, escolhendo um valor que seja conveniente, talvez até mesmo uma string em branco/vazia.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Cambrige quarta-feira, 13 de março de 2019 13:39
    quarta-feira, 13 de março de 2019 13:28
  • É mesmo isso! Funcionou. Obrigadíssimo. 

    quarta-feira, 13 de março de 2019 13:41