Autor Tópico: Forçar um "OR" entre os filtros  (Lida 1457 vezes)

paulo@cpninformatica.com.br

  • Novato
  • *
  • Mensagens: 7
    • Email
Forçar um "OR" entre os filtros
« Online: Novembro 03, 2011, 03:53:32 pm »
É o seguinte pessoal, tenho um filtro onde tem 3 campos.
1- Data Venda - Data_Venda
2- Gerente de Venda - gerente
3- Gerente Angariador - gerente_ang

O mesmo gerente pode ser filtrado como de venda e de Angariação.

Quando filtro pela data 01/10/2011 á 31/11/2011 e gerente X no campo gerente de Venda e Angariação com (Combinação dos dados selecionados: Marcado como "e"), não traz nenhum registro. O SQL montado é esse:

Data_Angariacao, Data_Venda, Midia, Prazo_Venda_Imovel, Data_Cadastro, Prazo_Compra, Produto, Imovel_Comprador_Vendedor, Unidade, Valor_Venda, Comissao_Total, Percentual_de_Comissao, Corretor, Comissao_Corretor, Angariador, Comissao_Angariador, gerente, gerente_ang from c_rel_vendas where Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' and gerente in (2586) and gerente_ang in (2586) order by gerente

Quando deixo (Combinação dos dados selecionados: Marcado como "ou"). Retorna todos os registros. O SQL montado é esse:

SELECT Data_Angariacao, Data_Venda, Midia, Prazo_Venda_Imovel, Data_Cadastro, Prazo_Compra, Produto, Imovel_Comprador_Vendedor, Unidade, Valor_Venda, Comissao_Total, Percentual_de_Comissao, Corretor, Comissao_Corretor, Angariador, Comissao_Angariador, gerente, gerente_ang from c_rel_vendas where Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' or gerente in (2586) or gerente_ang in (2586) order by gerente




A solução poderia ser forçar um OR entre os campos gerente e gerente_ang, na clausula Where ficaria um AND e um OR

SELECT Data_Angariacao, Data_Venda, Midia, Prazo_Venda_Imovel, Data_Cadastro, Prazo_Compra, Produto, Imovel_Comprador_Vendedor, Unidade, Valor_Venda, Comissao_Total, Percentual_de_Comissao, Corretor, Comissao_Corretor, Angariador, Comissao_Angariador, gerente, gerente_ang from c_rel_vendas where Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' and gerente in (2586) or gerente_ang in (2586) order by gerente

Teria como fazer isso no scriptcase?

wanderlanlima

  • Intermediário
  • ***
  • Mensagens: 241
    • Email
Re:Forçar um "OR" entre os filtros
« Responder #1 Online: Novembro 03, 2011, 04:46:09 pm »
desculpe mas não entendi o que vc quer fazer.

1. tenho o paulo, marcio e rosana (gerente de vendas)
2. tenho o josé, mario e maria (gerente agariador)
3. e a data

O mesmo Gerente de vendas pode ser agariador ?

paulo@cpninformatica.com.br

  • Novato
  • *
  • Mensagens: 7
    • Email
Re:Forçar um "OR" entre os filtros
« Responder #2 Online: Novembro 04, 2011, 12:40:10 pm »
Gerente de Vendas - Paulo, Marcio e Rosana
Gerente de Angariação - Paulo, Marcio e Rosana
Data da venda - 01/10/2011 a 31/10/2011

Todo filtro do scriptcase tem isso "Condição de Filtro" que pode ser AND ou OR.

Nesse caso quero filtrar. Exemplo:

Pela data venda 01/10/2011 a 31/10/2011;
Campo Gerente de Vendas, filtrar por Paulo;
Campo Gerente de Angariação, filtrar por Paulo;

na Clausula Where montada pelo scriptcase é o seguinte:
- Quando uso a condição do Filtro AND
where Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' and gerente in (2586) and gerente_ang in (2586) order by gerente

o Paulo pode ser Gerente de Vendas como Gerente Angariador, mas nunca os dois ao mesmo tempo. Com o AND não retorna nenhum resultado.


-Quando uso a condição do Filtro OR
where Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' or gerente in (2586) or gerente_ang in (2586) order by gerente

Me traz todos os registros, pois com o OR, ele filtra apenas pela data da venda e desconsidera o "or gerente in (2586) or gerente_ang in (2586) "


A solução poderia ser:
where Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' and gerente in (2586) or gerente_ang in (2586) order by gerente

Um AND entre a "Data_Venda between '2011-10-01 00:00:00' and '2011-10-31 23:59:59' and gerente in (2586)"
e um OR entre "gerente in (2586) or gerente_ang in (2586) order by gerente"

Teria com escolher a condição do Filtro entre os campos do Filtro?

wanderlanlima

  • Intermediário
  • ***
  • Mensagens: 241
    • Email
Re:Forçar um "OR" entre os filtros
« Responder #3 Online: Novembro 04, 2011, 01:54:02 pm »
Tenho uma tabela de pessoa_fisica e uma tabela de tipo_pessoa levando o codigo da pessoa fisica e o codigo do tipo de pessoa para uma tabela desmembrada pessoa_tipo_pessoa.

Nessa tabela teria os seguintes registros:

codigo_pessoa (Paulo)
codigo_tipo (2-gerente_vendas)

codigo_pessoa (Paulo)
codigo_tipo (2-gerente_agariador)

tendo esse registros formo o select para dosi campos do filtro, campos select de gerente de vendas e agariador.

ai no filtro vc pode pedir o intervalo de datas e gerente de vendas PAULO e agariador PAULO tambem.