Guest Ricardo Nepomuceno Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 Bom dia Galera,É o seguinte , preciso trazer a soma total de um campo no banco de dados e tambem um outro códigoFiz a seguinte instrução sqlsql1 = "select sum(pontuacao),cod_user from tdpontos_bolao group by pontuacao"set rs1 = conexao.execute(sql1)mas esta dando o seguinte erro************************************Microsoft OLE DB Provider for SQL Server error '80040e14' Column 'tdpontos_bolao.cod_user' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. /techdata/goleada/pontuacao.asp, line 42 ************************************Eu preciso pegar o cod_user porque estou fazendo um outro select onde pegarei os dados dos usuarios que mais pontuarãoentão eu tenho a tabela com a pontuaçãoe a outra com os dados do usuarioquem puder ajudar eu agradeçoabraçosRicardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 você deve agrupar por cod_user. Afinal, é o campo pontuacao q esta sendo somado. e você quer q ele seja somado para cada cod_user certo?então fica assim:select sum(pontuacao),cod_user from tdpontos_bolao group by cod_user Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Ricardo Nepomuceno Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 legal funcionou valeu , se eu fosse usar um inner join como eu faria ?********************************************sql = "SELECT * from top 30 tdpontos_bolao.cod_user, tdpontos_bolao.pontuacao, techPromoInscritos.nome,techPromoInscritos.ide FROM tdpontos_bolao INNER JOIN techPromoInscritos ON tdpontos_bolao.cod_user = techPromoInscritos.ide ORDER BY tdpontos_bolao.pontuacao desc" ********************************************AbraçosRicardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 ve se é isso q c quer:sql = "SELECT * from top 30 tdpontos_bolao.cod_user, Sum (tdpontos_bolao.pontuacao), techPromoInscritos.nome,techPromoInscritos.ide FROM tdpontos_bolao INNER JOIN techPromoInscritos ON tdpontos_bolao.cod_user = techPromoInscritos.ide GROUP BY tdpontos_bolao.cod_user, techPromoInscritos.nome,techPromoInscritos.ide ORDER BY tdpontos_bolao.pontuacao desc" so não sei se funciona com o top 30. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Ricardo Nepomuceno Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 É por aiusando assim SELECT * from top 30 deu erro de sintaxeai eu modifiquei para abaixo********************************************sql = "SELECT top 30 * from tdpontos_bolao.cod_user, Sum (tdpontos_bolao.pontuacao), techPromoInscritos.nome,techPromoInscritos.ide FROM tdpontos_bolao INNER JOIN techPromoInscritos ON tdpontos_bolao.cod_user = techPromoInscritos.ide GROUP BY tdpontos_bolao.cod_user, techPromoInscritos.nome,techPromoInscritos.ide where techPromoInscritos.rodada = '1' ORDER BY tdpontos_bolao.pontuacao desc"set rs = conexao.execute(sql)********************************************ai deu este erroMicrosoft OLE DB Provider for SQL Server error '80040e14' Line 1: Incorrect syntax near '.'. /techdata/goleada/pontuacao.asp, line 53 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 acho q o certo seria:SELECT top 30 tdpontos_bolao.cod_user, Sum (tdpontos_bolao.pontuacao), techPromoInscritos.nome,techPromoInscritos.ide FROM tdpontos_bolao INNER JOIN techPromoInscritos ON tdpontos_bolao.cod_user = techPromoInscritos.ide where techPromoInscritos.rodada = '1' GROUP BY tdpontos_bolao.cod_user, techPromoInscritos.nome,techPromoInscritos.ide ORDER BY Sum (tdpontos_bolao.pontuacao) desca sua query tinha os seguintes erros:1 - "SELECT top 30 * from" estava errado. o certo é sempre por top 30 depois os nomes dos campos e depos o from (o * so aparece quando se quer selecionar todos os campos. nesse caso não se escreve o nome de nenhum campo).se você ver vai ver q a sua query tinha dois froms2 - tem ser sempre nessa ordem: Where, Group By, Order By. você não pode por o group antes do where.3 - você não pode por order by num campo q esteja numa funcao de agrupamento (no caso o sum). se você deu sum na pontuacao, você não pode ordenar por ela a não ser q ordene por todo o campo agregado como fiz.criei as tabelas com os mesmos nomes e campos, testei a minha string aqui e não teve problemas. qualquer coisa poste ae. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ri_nepo Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 Valeu mano , a instrução sql funcionou , mas eu não entendo o porque ele não reconhecer o campo pontuação quando eu mando escrever , olha só<% rodada = "1"sql = "SELECT top 30 tdpontos_bolao.cod_user, Sum (tdpontos_bolao.pontuacao), techPromoInscritos.nome,techPromoInscritos.ide FROM tdpontos_bolao INNER JOIN techPromoInscritos ON tdpontos_bolao.cod_user = techPromoInscritos.ide where tdpontos_bolao.rodada = '"& rodada &"' GROUP BY tdpontos_bolao.cod_user, techPromoInscritos.nome,techPromoInscritos.ide ORDER BY Sum (tdpontos_bolao.pontuacao) desc"set rs = conexao.execute(sql)%> </b></font></div> </td> </tr> </table></div><table border="0" width="644" align="center" bgcolor="#eaeaea"> <tr> <td width="45"> </td> <td height="10" width="507"> <div align="center"><font size="2" face="Verdana, Arial, sans-serif"><b>Nome</b></font></div> </td> <td height="10" width="78"> <div align="center"><b><font size="2" face="Verdana, Arial, sans-serif">Pontuação</font></b></div> </td> </tr><% TotalRegistros = rs.recordcount %> <%while not rs.eof%><% for i= 1 to TotalRegistros %> <tr> <td width="45" bgcolor="#FFFFFF"><div align="center" class="style4 style5"><%=i%>º</div></td> <td height="26" width="507" bgcolor="#FFFFFF"> <div align="center" class="style4 style5"><%=rs("nome")%></div> </td> <td height="26" width="78" bgcolor="#FFFFFF"> <div align="center" class="style4"><%=rs("pontuacao")%></div> </td> <% rs.movenext next wend%>ai ele da este erroADODB.Recordset error '800a0cc1' Item cannot be found in the collection corresponding to the requested name or ordinal. /techdata/goleada/pontuacao.asp, line 70 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 tente dar um alias para a soma. do tipo:sql = "SELECT top 30 tdpontos_bolao.cod_user, Sum (tdpontos_bolao.pontuacao) as Soma, techPromoInscritos.nome,techPromoInscritos.ide FROM tdpontos_bolao INNER JOIN techPromoInscritos ON tdpontos_bolao.cod_user = techPromoInscritos.ide where tdpontos_bolao.rodada = '"& rodada &"' GROUP BY tdpontos_bolao.cod_user, techPromoInscritos.nome,techPromoInscritos.ide ORDER BY Sum (tdpontos_bolao.pontuacao) desc"No lugar de Soma, você poe o nome q quiser.ai na hora de mostrar você poe o nome do alias:<div align="center" class="style4"><%=rs("Soma")%></div> </td> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ri_nepo Postado Janeiro 9, 2006 Denunciar Share Postado Janeiro 9, 2006 valeu mano , é isso ae deu certofica com deusmuito obrigadoAbraçosRicardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Ricardo Nepomuceno
Bom dia Galera,
É o seguinte , preciso trazer a soma total de um campo no banco de dados e tambem um outro código
Fiz a seguinte instrução sql
sql1 = "select sum(pontuacao),cod_user from tdpontos_bolao group by pontuacao"
set rs1 = conexao.execute(sql1)
mas esta dando o seguinte erro
************************************
Microsoft OLE DB Provider for SQL Server error '80040e14'
Column 'tdpontos_bolao.cod_user' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
/techdata/goleada/pontuacao.asp, line 42
************************************
Eu preciso pegar o cod_user porque estou fazendo um outro select onde pegarei os dados dos usuarios que mais pontuarão
então eu tenho a tabela com a pontuação
e a outra com os dados do usuario
quem puder ajudar eu agradeço
abraços
Ricardo
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
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.