Ajuda para programa de bingo
18/05/2019
0
tenho duas tabelas
tbl_cartelas
car_codigo
car_bola_1
car_bola_2
car_bola_3
car_bola_4
car_bola_5
car_bola_6
--------------------
sorteio
sort_codigo
sort_bola1
sort_bola2
sort_bola3
sort_bola4
sort_bola5
sort_bola6
que método uso para selecionar cartelas de acordo com as bolas sorteadas, e identificar a cartela que primeiro contiver os números sorteados
tbl_cartelas
car_codigo
car_bola_1
car_bola_2
car_bola_3
car_bola_4
car_bola_5
car_bola_6
--------------------
sorteio
sort_codigo
sort_bola1
sort_bola2
sort_bola3
sort_bola4
sort_bola5
sort_bola6
que método uso para selecionar cartelas de acordo com as bolas sorteadas, e identificar a cartela que primeiro contiver os números sorteados
Patrick Ribeiro
Curtir tópico
+ 0
Responder
Post mais votado
20/05/2019
você pode se orientar por esta instrução:
A pontuação vai depender do número de bolas que podem ser sorteadas.
Como no teu exemplo você indicou que serão no máximo 6 bolas, fiz a instrução com esta quantidade.
A instrução exibe as cartelas melhores "posicionadas", com a maior pontuadora (ou a vencedora) no topo da lista.
Para obter somente aquela(s) contemplada(s), você pode alterar a condição "AND T.PONTOS > 0" para "AND T.PONTOS = 6"
SELECT T.CAR_CODIGO, T.SORT_CODIGO, T.PONTOS, CASE WHEN T.PONTOS = 6 THEN 'CONTEMPLADA!' ELSE ' ' END RESULTADO FROM ( SELECT TC.CAR_CODIGO, S.SORT_CODIGO, SUM((CASE WHEN S.sort_bola_1 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_2 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_3 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_4 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_5 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_6 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)) PONTOS FROM TBL_CARTELAS TC, SORTEIO S GROUP BY TC.car_codigo, S.SORT_CODIGO ) T WHERE T.SORT_CODIGO = 3 -- CODIGO DO SORTEIO AND T.PONTOS > 0 -- SOMENTE CARTELAS COM ALGUM NÚMERO SORTEADO ORDER BY T.PONTOS DESC, T.car_codigo, T.SORT_CODIGO
A pontuação vai depender do número de bolas que podem ser sorteadas.
Como no teu exemplo você indicou que serão no máximo 6 bolas, fiz a instrução com esta quantidade.
A instrução exibe as cartelas melhores "posicionadas", com a maior pontuadora (ou a vencedora) no topo da lista.
Para obter somente aquela(s) contemplada(s), você pode alterar a condição "AND T.PONTOS > 0" para "AND T.PONTOS = 6"
Emerson Nascimento
Responder
Mais Posts
21/05/2019
Patrick Ribeiro
você pode se orientar por esta instrução:
A pontuação vai depender do número de bolas que podem ser sorteadas.
Como no teu exemplo você indicou que serão no máximo 6 bolas, fiz a instrução com esta quantidade.
A instrução exibe as cartelas melhores "posicionadas", com a maior pontuadora (ou a vencedora) no topo da lista.
Para obter somente aquela(s) contemplada(s), você pode alterar a condição "AND T.PONTOS > 0" para "AND T.PONTOS = 6"
SELECT T.CAR_CODIGO, T.SORT_CODIGO, T.PONTOS, CASE WHEN T.PONTOS = 6 THEN 'CONTEMPLADA!' ELSE ' ' END RESULTADO FROM ( SELECT TC.CAR_CODIGO, S.SORT_CODIGO, SUM((CASE WHEN S.sort_bola_1 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_2 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_3 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_4 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_5 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)+ (CASE WHEN S.sort_bola_6 IN (TC.car_bola_1, TC.car_bola_2, TC.car_bola_3, TC.car_bola_4, TC.car_bola_5, TC.car_bola_6) THEN 1 ELSE 0 END)) PONTOS FROM TBL_CARTELAS TC, SORTEIO S GROUP BY TC.car_codigo, S.SORT_CODIGO ) T WHERE T.SORT_CODIGO = 3 -- CODIGO DO SORTEIO AND T.PONTOS > 0 -- SOMENTE CARTELAS COM ALGUM NÚMERO SORTEADO ORDER BY T.PONTOS DESC, T.car_codigo, T.SORT_CODIGO
A pontuação vai depender do número de bolas que podem ser sorteadas.
Como no teu exemplo você indicou que serão no máximo 6 bolas, fiz a instrução com esta quantidade.
A instrução exibe as cartelas melhores "posicionadas", com a maior pontuadora (ou a vencedora) no topo da lista.
Para obter somente aquela(s) contemplada(s), você pode alterar a condição "AND T.PONTOS > 0" para "AND T.PONTOS = 6"
amigo não consegui, me ajuda mais um pouco! em uma tela vou acompanhar o sorteio do bingo, com 75 bolas a cair do globo, estou armazenando na na tabela sorteio como viu, preciso criar uma outra tabela chamada pontos?
tentei o código abaixo mas não deu certo,
SELECT
CARTELA.CAR_CODIGO,
SORTEIO.SORT_CODIGO,
T.PONTOS,
CASE WHEN T.PONTOS.ID = 6
THEN 'CONTEMPLADA!'
ELSE ' '
END RESULTADO
FROM (
SELECT
CARTELA.CAR_CODIGO,
SORTEIO.SORT_CODIGO,
SUM(
(CASE WHEN Sorteio.sort_bola1 IN (Cartela.car_bola_1, Cartela.car_bola_2, Cartela.car_bola_3, Cartela.car_bola_4, Cartela.car_bola_5, Cartela.car_bola_6) THEN 1 ELSE 0 END)+
(CASE WHEN Sorteio.sort_bola2 IN (Cartela.car_bola_1, Cartela.car_bola_2, Cartela.car_bola_3, Cartela.car_bola_4, Cartela.car_bola_5, Cartela.car_bola_6) THEN 1 ELSE 0 END)+
(CASE WHEN Sorteio.sort_bola3 IN (Cartela.car_bola_1, Cartela.car_bola_2, Cartela.car_bola_3, Cartela.car_bola_4, Cartela.car_bola_5, Cartela.car_bola_6) THEN 1 ELSE 0 END)+
(CASE WHEN Sorteio.sort_bola4 IN (Cartela.car_bola_1, Cartela.car_bola_2, Cartela.car_bola_3, Cartela.car_bola_4, Cartela.car_bola_5, Cartela.car_bola_6) THEN 1 ELSE 0 END)+
(CASE WHEN Sorteio.sort_bola5 IN (Cartela.car_bola_1, Cartela.car_bola_2, Cartela.car_bola_3, Cartela.car_bola_4, Cartela.car_bola_5, Cartela.car_bola_6) THEN 1 ELSE 0 END)+
(CASE WHEN Sorteio.sort_bola6 IN (Cartela.car_bola_1, Cartela.car_bola_2, Cartela.car_bola_3, Cartela.car_bola_4, Cartela.car_bola_5, Cartela.car_bola_6) THEN 1 ELSE 0 END))
FROM
CARTELA, SORTEIO
GROUP BY
Cartela.car_codigo,
SORTEIO.SORT_CODIGO
)
WHERE
SORTEIO.SORT_CODIGO = 3
AND T.PONTOS.ID > 0
ORDER BY
T.PONTOS DESC, CARTELA.CAR_CODIGO,
SORTEIO.SORT_CODIGO
Responder
21/05/2019
Patrick Ribeiro
eu preciso saber o código da cartela, que contem as seis bolas, caso tenha na tabela sorteio,
Responder
Clique aqui para fazer login e interagir na Comunidade :)