Ajuda com consulta para montar um ranking
23/02/2016
0
Estou com esse problema,eu tenho que fazer um ranking com a classificação por pontuação e caso haja empate, por data e hora em que a pontuação foi inserida sendo a pontuação mais recente dada como maior.
select * from (
(SELECT distinct nome_jogador,pontos,datahora, 1 as ordem
from jogador j inner join pontuacao_fx p
on j.id_jogador = p.id_jogador WHERE pontos > (SELECT pontos FROM pontuacao_fx WHERE id_jogador=7 )
ORDER BY datahora desc, pontos desc)
union
(select distinct nome_jogador, pontos,datahora, 2 as ordem
from jogador j inner join pontuacao_fx p
on j.id_jogador = p.id_jogador where pontos = (SELECT pontos FROM pontuacao_fx WHERE id_jogador=7 )
)
union
(SELECT distinct nome_jogador,pontos,datahora, 3 as ordem
from jogador j inner join pontuacao_fx p
on j.id_jogador = p.id_jogador WHERE pontos < (SELECT pontos FROM pontuacao_fx WHERE id_jogador=7 )
ORDER BY datahora desc, pontos desc);
) order by ordem asc,datahora desc, pontos desc
Estou de MYSQL gratuito com workbench e o erro é esse:
ERROR CODE:1248: EVERY DERIVED TABLE MUST HAVE ITS OWN ALIAS.
Peço encarecidamente socorro.
select * from (
(SELECT distinct nome_jogador,pontos,datahora, 1 as ordem
from jogador j inner join pontuacao_fx p
on j.id_jogador = p.id_jogador WHERE pontos > (SELECT pontos FROM pontuacao_fx WHERE id_jogador=7 )
ORDER BY datahora desc, pontos desc)
union
(select distinct nome_jogador, pontos,datahora, 2 as ordem
from jogador j inner join pontuacao_fx p
on j.id_jogador = p.id_jogador where pontos = (SELECT pontos FROM pontuacao_fx WHERE id_jogador=7 )
)
union
(SELECT distinct nome_jogador,pontos,datahora, 3 as ordem
from jogador j inner join pontuacao_fx p
on j.id_jogador = p.id_jogador WHERE pontos < (SELECT pontos FROM pontuacao_fx WHERE id_jogador=7 )
ORDER BY datahora desc, pontos desc);
) order by ordem asc,datahora desc, pontos desc
Estou de MYSQL gratuito com workbench e o erro é esse:
ERROR CODE:1248: EVERY DERIVED TABLE MUST HAVE ITS OWN ALIAS.
Peço encarecidamente socorro.
Luís Oliveira
Curtir tópico
+ 0
Responder
Posts
23/02/2016
Marcos P
O problema deve estar ocorrendo por conta do ORDER BY que é genérico.
Tente o seguinte : em cada uma das queries use ALIAS especifico ( j1, p1, j2, p2,... ) e retire todos os ORDER BY ( só pra testar ).
Se funcionar, tente colocar o ORDER BY somente na clausula mais externa ( select * from... ).
Tente o seguinte : em cada uma das queries use ALIAS especifico ( j1, p1, j2, p2,... ) e retire todos os ORDER BY ( só pra testar ).
Se funcionar, tente colocar o ORDER BY somente na clausula mais externa ( select * from... ).
Responder
Clique aqui para fazer login e interagir na Comunidade :)