Fórum Ajuda para programa de bingo #602436
18/05/2019
0
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
+ 0Post mais votado
20/05/2019
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_CODIGOA 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
Gostei + 1
Mais Posts
21/05/2019
Patrick Ribeiro
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_CODIGOA 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
Gostei + 0
21/05/2019
Patrick Ribeiro
Gostei + 0
22/05/2019
Emerson Nascimento
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)