hellyson 0 Denunciar post Postado Novembro 8, 2010 Senhores, Tenho 3 menus: UF Cidade Site Uma tabela que contém os 3 campos: UF Cidade Site Na minha aplicação, se eu selecionar a UF = MG por exemplo, devará trazer somente as Cidades e Sites com UF = MG. Se eu selecionar o Site = Centro, deverá trazer somente as Cidades e os UFs que tenham o Site = Centro Se eu não selecionar nenhum Site, UF ou Cidade, na escola de qualquer um, iria trazer todos. Fiz assim para cada menu (exemplo abaixo foi da cidade, porém estão todos iguais, só mudando o campo): select distinct cidade from tblSite where status = 'Ativo' and ( uf = '{campouf}' OR cidade= '{campocidade}' OR site= '{camposite}' ) order by cidade //Coloquei a string acima no menu cidade, se antes eu selecionar o Site = Centro, realmente irá mostrar somente as cidades que tem o Site = Centro, porém se eu não selecionar nada, não traz nada, queria algo assim: select distinct cidade from tblSite where status = 'Ativo' and ( if '{campouf}' = null then ignoraclausula else uf = '{campouf}' end ) AND ( if '{campocidade}' = null then ignoraclausula else cidade = '{campocidade}' end ) AND ( if '{camposite}' = null then ignoraclausula else site= '{camposite}' end ) order by cidade Agradeço quem puder me ajudar Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 8, 2010 Use NVL. exemplo ... WHERE UF = NVL({camposite},UF) AND ... Se o valor do parametro for nulo força que UF seja igual a UF, ou seja tudo, do contrário testa se é igual a UF informada. Ajudou ? Compartilhar este post Link para o post Compartilhar em outros sites
supernoi 0 Denunciar post Postado Novembro 8, 2010 tem tambem o NVL2(expression, value_if_null, value_if_null) =P Ja tive que fazer uma condicional parecida, eu tive mais desempenho em mandar a a query pronta da aplicacao para o banco. na aplicacao determinando quais seriam os campos de pesquisa. e na query buscar com o natural join, mesmo... ve qual solucao fica melhor para voce... Compartilhar este post Link para o post Compartilhar em outros sites
hellyson 0 Denunciar post Postado Novembro 8, 2010 Use NVL. exemplo ... WHERE UF = NVL({camposite},UF) AND ... Se o valor do parametro for nulo força que UF seja igual a UF, ou seja tudo, do contrário testa se é igual a UF informada. Ajudou ? Obrigado Motta, tive ajuda de um amigo, ficou assim: Select Distinct cidade From tblsite Where status = 'Ativo' And ('{campouf}' Is Null Or uf = '{campouf}') And ('{campocidade}' Is Null Or cidade = '{campocidade}') And ('{camposite}' Is Null Or site = '{camposite}') Order By cidade Valeu a todos Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 8, 2010 Poderia ser também : Select Distinct cidade From tblsite Where status = 'Ativo' And nvl('{campouf}',uf) = uf And nvl('{campocidade}',cidade) = cidade And nvl('{camposite}',site) = site Order By cidade Mas se funcionou deixa queito. Compartilhar este post Link para o post Compartilhar em outros sites