Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Londim

[Resolvido] Como pesquisar um a tabela sql com php

Recommended Posts

Galera eu to fazendo um torneio........

 

e preciso de um rank de jogadores

 

dai qria criar uma tabela pra kda usuario

 

entao eu poderia criar as data de cada jogo

 

so q naum tenhu nem ideia de como tratar tabelas sei mexe muito bem com fields

 

entao primeiro como faço uma pesquisa qru q ele pegue o jogador com mais pontos............

 

pra isso ele vai ter q correr todas as tabelas e todos os fildes de pontos como seria essa pesquisa

 

 

EH URGENTE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera eu to fazendo um torneio........

 

e preciso de um rank de jogadores

 

dai qria criar uma tabela pra kda usuario

 

entao eu poderia criar as data de cada jogo

 

so q naum tenhu nem ideia de como tratar tabelas sei mexe muito bem com fields

 

entao primeiro como faço uma pesquisa qru q ele pegue o jogador com mais pontos............

 

pra isso ele vai ter q correr todas as tabelas e todos os fildes de pontos como seria essa pesquisa

 

 

EH URGENTE

 

você vai precisar de apenas uma tabela para seus jogadores e um campo na tabela que armazena a pontuaçao de cada jogador, depois para gerar um ranking

basta você fazer uma select com a clausula LIMIT (limitando aos 10 ultimos resultados por exemplo) em ordem decrescente (ou seja do primeiro para o décimo)

 

select * from jogadores

order by pontos desc

limit 10

 

explicando:

select * from jogadores

selecione todos os campos da tabela jogadores

 

order by pontos desc

ordene pelo campo pontos em ordem decrescente

 

limit 10

limite os resultados a 10 registros

 

 

 

por uma questão de performance, é desejavel a criacao de um indice para o campo "pontos"

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Londim, tem algum motivo para querer criar uma tabela pra cada usuário ?

tipo eh o seguite qru um rank

 

esse rank tem 5 tipos de pontos por jogo

 

o jogador pode jogar mais de uma vez por dia

 

e eu preciso ter registrado cada jogo dele no banco com data e hora

 

mi da uma ideia de como fazer q eu desisto de criar as tabelas eheheheehe

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Londim, tem algum motivo para querer criar uma tabela pra cada usuário ?

tipo eh o seguite qru um rank

 

esse rank tem 5 tipos de pontos por jogo

 

o jogador pode jogar mais de uma vez por dia

 

e eu preciso ter registrado cada jogo dele no banco com data e hora

 

mi da uma ideia de como fazer q eu desisto de criar as tabelas eheheheehe

 

obrigado

 

você tem uma tabela de jogos certo? com a data e hora de criacao do jogo (esse jogo deve ter um id)

crie uma tabela com jogos_jogador com o id do jogo e o id do jogado e os pontos obtidos por este jogador cada pontuação em seu devido campo, eum campo que seja uma sintese desses pontos com seus devidos pesos para servir de classificacao (q pode ser por exemplo a somatoria de todos os 5 pontos diferentes) ou definido por algum criterio seu...

 

a tabela jogos_jogador ficara assim

id_jogo, id_jogador, pontuacao1,pontuacao2, ..., pontuacaoN, fatordeclassificacao

 

sua select vai ser assim

 

select jogadores.nome, sum(jogos_jogador.pontuacao1)as pontos1, sum(jogos_jogador.pontuacao2) as pontos2,...,sum(jogos_jogador.pontuacaoN)as pontosN from jogos_jogador

inner join jogadores on jogadores.id = jogos_jogador.id_jogador

inner join jogos on jogos.id = jogos_jogadores.id_jogo

where jogos.data = current_date

group by jogos_jogador.id_jogador

order by sum(jogos_jogador(fatordeclassificacao) desc

limit 10

 

explicando

select jogadores.nome, sum(jogos_jogador.pontuacao1)as pontos1, sum(jogos_jogador.pontuacao2) as pontos2,...,sum(jogos_jogador.pontuacaoN)as pontosN from jogos_jogador

selecione os nomes dos jogadores e a soma de cada pontaucao em sua devida coluna

 

inner join jogadores on jogadores.id = jogos_jogador.id_jogador

relaciona a tabela de jogadores (necessaria para retornar os nomes dos jogadores)

 

inner join jogos on jogos.id = jogos_jogadores.id_jogo

relaciona a tabela de jogos para que possa pegar as datas dos jogos (ja q o ranking é diario)

 

group by jogos_jogador.id_jogador

agrupa resultados pelo codigo do jogador

 

order by sum(jogos_jogador(fatordeclassificacao) desc

orderna(decrescente) pela soma do campo q define a classificacao do jogador

 

limit 10

limita a 10 resultados

 

 

abraço

 

Lucas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Londim, tem algum motivo para querer criar uma tabela pra cada usuário ?

tipo eh o seguite qru um rank

 

esse rank tem 5 tipos de pontos por jogo

 

o jogador pode jogar mais de uma vez por dia

 

e eu preciso ter registrado cada jogo dele no banco com data e hora

 

mi da uma ideia de como fazer q eu desisto de criar as tabelas eheheheehe

 

obrigado

 

você tem uma tabela de jogos certo? com a data e hora de criacao do jogo (esse jogo deve ter um id)

crie uma tabela com jogos_jogador com o id do jogo e o id do jogado e os pontos obtidos por este jogador cada pontuação em seu devido campo, eum campo que seja uma sintese desses pontos com seus devidos pesos para servir de classificacao (q pode ser por exemplo a somatoria de todos os 5 pontos diferentes) ou definido por algum criterio seu...

 

a tabela jogos_jogador ficara assim

id_jogo, id_jogador, pontuacao1,pontuacao2, ..., pontuacaoN, fatordeclassificacao

 

sua select vai ser assim

 

select jogadores.nome, sum(jogos_jogador.pontuacao1)as pontos1, sum(jogos_jogador.pontuacao2) as pontos2,...,sum(jogos_jogador.pontuacaoN)as pontosN from jogos_jogador

inner join jogadores on jogadores.id = jogos_jogador.id_jogador

inner join jogos on jogos.id = jogos_jogadores.id_jogo

where jogos.data = current_date

group by jogos_jogador.id_jogador

order by sum(jogos_jogador(fatordeclassificacao) desc

limit 10

 

explicando

select jogadores.nome, sum(jogos_jogador.pontuacao1)as pontos1, sum(jogos_jogador.pontuacao2) as pontos2,...,sum(jogos_jogador.pontuacaoN)as pontosN from jogos_jogador

selecione os nomes dos jogadores e a soma de cada pontaucao em sua devida coluna

 

inner join jogadores on jogadores.id = jogos_jogador.id_jogador

relaciona a tabela de jogadores (necessaria para retornar os nomes dos jogadores)

 

inner join jogos on jogos.id = jogos_jogadores.id_jogo

relaciona a tabela de jogos para que possa pegar as datas dos jogos (ja q o ranking é diario)

 

group by jogos_jogador.id_jogador

agrupa resultados pelo codigo do jogador

 

order by sum(jogos_jogador(fatordeclassificacao) desc

orderna(decrescente) pela soma do campo q define a classificacao do jogador

 

limit 10

limita a 10 resultados

 

 

abraço

 

Lucas

 

kra MUITO OBRIGADO NUM SEI NEM COMO AGRADECER vlw d++

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra MUITO OBRIGADO NUM SEI NEM COMO AGRADECER vlw d++

de nada amigo, assim q estiver implementando se tiver mais alguma duvida, poste aih

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.