| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Netrunner Aprendiz

Registrado: Domingo, 7 de Julho de 2013 Mensagens: 236
|
Enviada: Qua Dez 04, 2013 6:04 am Assunto: Error na Query |
|
|
Queria saber qual é o erro que ta nessa query:
| Código: | SELECT name as topUser, 100*playedTime*1.0/gameDuration*1.0 as topValue, ' % ' as topValueUnit from (Select b.name as name, MAX(a.id) as id, SUM('left') as playedTime,SUM(duration) as gameDuration FROM dotaplayers AS a LEFT JOIN gameplayers AS b ON a.gameid = b.gameid and a.colour = b.colour LEFT JOIN games as c on a.gameid = c.id
LEFT JOIN dotagames as d on d.gameid = c.id where winner <> 1000 |
sendo que está totalmente correta.. |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Dez 04, 2013 7:16 am Assunto: |
|
|
tentou executar a query no client do MySQL?
nao entendi aqui: SUM('left'). pq das aspas? _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
Netrunner Aprendiz

Registrado: Domingo, 7 de Julho de 2013 Mensagens: 236
|
Enviada: Qua Dez 04, 2013 7:38 am Assunto: |
|
|
Estou pegando de uma página de ranking as query..
essa aqui funciona normal
| Código: | SELECT original as topHero, description as topHeroName, gold as topValue, b.name as topUser, a.gameid as topGame
FROM dotaplayers AS a
LEFT JOIN gameplayers AS b ON b.gameid = a.gameid and a.colour = b.colour
LEFT JOIN games as c on a.gameid = c.id
JOIN heroes as d on hero = heroid |
já está daqui tem o mesmo error de near "
| Código: | SELECT name as topUser, case when (totKills = 0) then 0 when (totDeaths = 0) then 1000 else ((totKills*1.0)/(totDeaths*1.0)) end as topValue from (Select b.name as name, MAX(a.id) as id,
SUM(kills) as totKills,
SUM(deaths) as totDeaths
FROM dotaplayers AS a
LEFT JOIN gameplayers AS b ON a.gameid = b.gameid and a.colour = b.colour
LEFT JOIN games as c on a.gameid = c.id
LEFT JOIN dotagames as d on d.gameid = c.id
where winner <> 0 |
Sim, eu executo ela primeiramente no mysql para depois passar pra delphi.. |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Dez 04, 2013 9:17 am Assunto: |
|
|
Bom dia,
Não tenho nenhuma experiência com o MySQL mas acredito que a query está incompleta.
Acho que está faltando um Group By e fechar parênteses no segundo Select. E talvez um alias depois de fechar parênteses.
Espero que ajude.
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-terreno |
|
| Voltar ao Topo |
|
 |
Netrunner Aprendiz

Registrado: Domingo, 7 de Julho de 2013 Mensagens: 236
|
Enviada: Qua Dez 04, 2013 9:38 am Assunto: |
|
|
Tava certo.. tava faltando o group mesmo...
| Código: | SELECT name as topUser, case when (totKills = 0) then 0 when (totDeaths = 0) then 1000 else ((totKills*1.0)/(totDeaths*1.0)) end as topValue from (Select b.name as name, MAX(a.id) as id,
SUM(kills) as totKills,
SUM(deaths) as totDeaths
FROM dotaplayers AS a
LEFT JOIN gameplayers AS b ON a.gameid = b.gameid and a.colour = b.colour
LEFT JOIN games as c on a.gameid = c.id
LEFT JOIN dotagames as d on d.gameid = c.id
where winner <> 0 group by YEAR(datetime), MONTH(datetime)
order by YEAR(datetime) desc, MONTH(datetime) desc) as h |
|
|
| Voltar ao Topo |
|
 |
|