Pesquisa complexa em vários campos da tabela
20/01/2013
0
Olá pessoal, tudo bem?
Tenho uma database firebird 2.5 q armazena os números da megasena (todos os sorteios até hj) com os seguintes campos:
Cod_Sorteio(pk), Data_Sorteio(Date), Primeira_Dezena(int), Segunda_Dezena(int), Terceira_Dezena(int), Quarta_Dezena(int), Quinta_Dezena(int), Sexta_Dezena(int), Ganhadores_Sena(int), Premio_Sena(NUMERIC), Ganhadores_Quina(int), Premio Quina(NUMERIC) etc. São muitos campos.
Preciso fazer diversas operações com essa base, por exemplo; eu informo a sequencia das 6 dezenas sorteadas e o programa vai me retornar os dados do sorteio, caso exista um sorteio com essa sequência.
O problema é que as dezenas que informo na pesquisa podem estar armazenadas em qualquer um dos campos, não respeitando uma ordem. Ex.: a dezena 13 pode estar armazenada no campo "Primeira_Dezena", ou no campo "Segunda_Dezena" e assim sucessivamente até no campo "Sexta_Dezena".
Preciso construir uma pesquisa q me retorne os dados de um jogo informado, independente de onde a dezena esteja armazenada.
Estou usando entity framework da plataforma .net.
Tem como construir essa pesquisa?
Se não for possível fazer pelo EF, como ficaria por sql mesmo?
[]'s
Tenho uma database firebird 2.5 q armazena os números da megasena (todos os sorteios até hj) com os seguintes campos:
Cod_Sorteio(pk), Data_Sorteio(Date), Primeira_Dezena(int), Segunda_Dezena(int), Terceira_Dezena(int), Quarta_Dezena(int), Quinta_Dezena(int), Sexta_Dezena(int), Ganhadores_Sena(int), Premio_Sena(NUMERIC), Ganhadores_Quina(int), Premio Quina(NUMERIC) etc. São muitos campos.
Preciso fazer diversas operações com essa base, por exemplo; eu informo a sequencia das 6 dezenas sorteadas e o programa vai me retornar os dados do sorteio, caso exista um sorteio com essa sequência.
O problema é que as dezenas que informo na pesquisa podem estar armazenadas em qualquer um dos campos, não respeitando uma ordem. Ex.: a dezena 13 pode estar armazenada no campo "Primeira_Dezena", ou no campo "Segunda_Dezena" e assim sucessivamente até no campo "Sexta_Dezena".
Preciso construir uma pesquisa q me retorne os dados de um jogo informado, independente de onde a dezena esteja armazenada.
Estou usando entity framework da plataforma .net.
Tem como construir essa pesquisa?
Se não for possível fazer pelo EF, como ficaria por sql mesmo?
[]'s
Cristiano Franco
Curtir tópico
+ 0
Responder
Posts
20/02/2013
Alessandro Folk
Boa noite...
uma forma de fazer seria algo desse tipo:
com este SQL você terá o código do sorteio e o numero de acertos!
Fiz em PostgreSQL, caso de algum problema me avisa que lhe ajudo...
uma forma de fazer seria algo desse tipo:
select r.cod_sorteio, qtd from ((select t.cod_sorteio, (select sum(coalesce(num,0)) from (select 1 as num where :primeiro in (select t.primeira_dezena union all select t.segunda_dezena union all select t.terceira_dezena union all select t.quarta_dezena union all select t.quinta_dezena union all select t.sexta_dezena) union all select 1 as num where :segundo in (select t.primeira_dezena union all select t.segunda_dezena union all select t.terceira_dezena union all select t.quarta_dezena union all select t.quinta_dezena union all select t.sexta_dezena) union all select 1 as num where :terceiro in (select t.primeira_dezena union all select t.segunda_dezena union all select t.terceira_dezena union all select t.quarta_dezena union all select t.quinta_dezena union all select t.sexta_dezena) union all select 1 as num where :quarto in (select t.primeira_dezena union all select t.segunda_dezena union all select t.terceira_dezena union all select t.quarta_dezena union all select t.quinta_dezena union all select t.sexta_dezena) union all select 1 as num where :quinto in (select t.primeira_dezena union all select t.segunda_dezena union all select t.terceira_dezena union all select t.quarta_dezena union all select t.quinta_dezena union all select t.sexta_dezena) union all select 1 as num where :sexto in (select t.primeira_dezena union all select t.segunda_dezena union all select t.terceira_dezena union all select t.quarta_dezena union all select t.quinta_dezena union all select t.sexta_dezena)) g) as qtd from ((select a.cod_sorteio, a.primeira_dezena, a.segunda_dezena, a.terceira_dezena, a.quarta_dezena, a.quinta_dezena, a.sexta_dezena from sorteio a)) t )) r where coalesce(r.qtd,0) > 0
com este SQL você terá o código do sorteio e o numero de acertos!
Fiz em PostgreSQL, caso de algum problema me avisa que lhe ajudo...
Responder
Clique aqui para fazer login e interagir na Comunidade :)