Ir para conteúdo
Fórum Script Brasil
  • 0

Select - Sistema bolão


Tiago Oliveira

Pergunta

Ola pessoal, alguém poderia me ajudar, estou tentando montar um Select para um sistema de bolão que estou fazendo.

Minha estrutura de banco é a seguinte

tabela de aposta do usuario>

cod_jogo | placar1 | placar2 | cod_usuario

tabela de resultados do admin>

cod_jog | placar1 | placar2

na tabela de apostas vao ter vários registros do mesmo usuário, apenas um codigo de jogo. então o cod_jogo ligaria ao cod_jog.

Com isso tem alguma condições que são

acertar um placar = 1 ponto

acertar os 2 = 5 pontos

e depois somar os pontos desse usuario, montando um ranking do maior para o menor.

inicialmente eu montei no access uma consulta que tem a seguinte sql:

SELECT apostas.cod_jogo, apostas.placar1 AS apostas_placar1, resultados.placar1 AS resultados_placar1, apostas.cod_usuario, apostas.placar2 AS apostas_placar2, resultados.placar2 AS resultados_placar2, resultados.cod_jog
FROM apostas INNER JOIN resultados ON apostas.cod_jogo = resultados.cod_jog
GROUP BY apostas.cod_jogo, apostas.placar1, resultados.placar1, apostas.cod_usuario, apostas.placar2, resultados.placar3, resultados.cod_jog;

que monta uma tabela com a seguinte estrutura

apostas_placar1 | resultados_placar1 | apostas_placar2 | resultados_placar2 ...

não sei se essa sql irá servir, mas o que precisaria é confrontar os campos.

apostas_placar1 com o resultados_placar1

apostas_placar2 com o resultados_placar2

tentei usar o if no asp. até conseguir montar a soma certinho. mas não vi forma de ordenar o ranking do maior para o menor.

quem puder me auxiliar com isso agradeço.

vlw

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

opa galera,

o amigo leonardo conseguiu montar um select para mim,

"SELECT a.cod_usuario, SUM(IF(a.time1=r.time1 XOR a.time2=r.time2, 1, IF(a.time1 = r.time1 AND a.time2=r.time2, 5, IF(a.vencedor=r.vencedor,2,0)))) AS rank FROM apostas a INNER JOIN resultados r ON a.cod_jogo=r.cod_jog GROUP BY a.cod_usuario ORDER BY rank DESC"

só que estou tentando usar um TOP 5. mas não conseguir, queria selecionar apenas os 5 primeiros. se alguém souber como resolver. Valeu

Link para o comentário
Compartilhar em outros sites

  • 0

"SELECT top 5 a.cod_usuario, SUM(IF(a.time1=r.time1 XOR a.time2=r.time2, 1, IF(a.time1 = r.time1 AND a.time2=r.time2, 5, IF(a.vencedor=r.vencedor,2,0)))) AS rank FROM apostas a INNER JOIN resultados r ON a.cod_jogo=r.cod_jog GROUP BY a.cod_usuario ORDER BY rank DESC"

era isso?

Link para o comentário
Compartilhar em outros sites

  • 0
"SELECT top 5 a.cod_usuario, SUM(IF(a.time1=r.time1 XOR a.time2=r.time2, 1, IF(a.time1 = r.time1 AND a.time2=r.time2, 5, IF(a.vencedor=r.vencedor,2,0)))) AS rank FROM apostas a INNER JOIN resultados r ON a.cod_jogo=r.cod_jog GROUP BY a.cod_usuario ORDER BY rank DESC"

era isso?

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 a.cod_usuario, SUM(IF

quando coloco assim ele da esse erro, não sei o motivo.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... nem consegui interpretar o que você quis dizer com essa query aí em cima...

Cheia de condicionais e tal...

Eu recomendaria tentar deixá-la o mais "limpa" e organizada possível... tentando de todas as formas passar essas condicionais para fora dela (sempre que possível)...

Apesar do erro indicar o algarismo 5 de "top 5", acredito que de fato o erro seja em outro local!

Uma boa forma de descobrir isso seia dar um debug nessa query... faça isso e poste aqui os resultados!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Tiago! Acredito que você esteja confundindo MySQL server com SQL server, ou seja, servidores distintos. O comando para listar em SQL server é Top, porém o comando para listar em MySQL server é Liimit, ou seja, traduzindo a informação que o a página retornou para você informa exatamente isto.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 a.cod_usuario, SUM(IF

Você tem um erro em sua SQL síntese, verifique o manual que corresponda a versão de seu servidor MySQL para utilizar a síntese correta próxima a...

Ou seja, Uma síntese SQL não representa uma tecnologia de um servidor em especial e sim as bases fundamentais de cada um que podem ser distintas em plataforma fisíca. Top para SQL server e Limit para MySQL server. Introduza ao final de Desc o comando Limit 5 para que seja executado corretamente sua síntese MySQL.

Exemplo:

"ORDER BY rank DESC Limit 5"

Espero ter ajudado você.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...