ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Error na Query

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Netrunner
Aprendiz
Aprendiz


Registrado: Domingo, 7 de Julho de 2013
Mensagens: 236

MensagemEnviada: Qua Dez 04, 2013 6:04 am    Assunto: Error na Query Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Dez 04, 2013 7:16 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Netrunner
Aprendiz
Aprendiz


Registrado: Domingo, 7 de Julho de 2013
Mensagens: 236

MensagemEnviada: Qua Dez 04, 2013 7:38 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Dez 04, 2013 9:17 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Netrunner
Aprendiz
Aprendiz


Registrado: Domingo, 7 de Julho de 2013
Mensagens: 236

MensagemEnviada: Qua Dez 04, 2013 9:38 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB