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
Patrick Ribeiro

Patrick Ribeiro

Responder

Post mais votado

20/05/2019

você pode se orientar por esta instrução:
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

Emerson Nascimento
Responder

Mais Posts

21/05/2019

Patrick Ribeiro

você pode se orientar por esta instrução:
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

22/05/2019

Emerson Nascimento

publique a estrutura das tabelas
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar