Avatar billede mvk Nybegynder
11. februar 2005 - 09:03 Der er 9 kommentarer og
1 løsning

aggregate function fejl

jeg forsøger at trække 3 værdier ind i min sql men det virker ikke. Hvad er det med den der "aggregate function"

SQL:
"SELECT Answer, Question AS Poll, COUNT(Answer) AS Stemmer  FROM results, question  WHERE pollID = IDquestion  GROUP BY Answer"

FEJL:
Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'Poll' as part of an aggregate function.

/past_polls.asp, line 13
Avatar billede fennec Nybegynder
11. februar 2005 - 09:06 #1
Du skal have Poll med på group by listen:

"SELECT Answer, Question AS Poll, COUNT(Answer) AS Stemmer  FROM results, question  WHERE pollID = IDquestion  GROUP BY Answer, Poll"
Avatar billede mvk Nybegynder
11. februar 2005 - 09:12 #2
jeg kager rundt i det. jeg skal lave et udtræk og vise resultatet fra en afstemning:

tabeller:
question - IDquestion, Question
results - IDresult, pollID, Answer

jeg vil gerne vise: Question, grupperet Answer med tal på hvor mange der har svaret netop dette, total antal svar. Nedenstående virker ikke men er mit oplæg :)

SELECT Question, COUNT(Answer) AS AntalSvar, COUNT(IDresult) AS TotalSvar
FROM question, results
WHERE IDquestion=pollID
GROUP BY Answer
Avatar billede mvk Nybegynder
11. februar 2005 - 09:13 #3
så ikke dit svar fennec men får denne fejl på det:
Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'Poll' as part of an aggregate function.

/past_polls.asp, line 13
Avatar billede mvk Nybegynder
11. februar 2005 - 09:14 #4
link så i kan følge med: http://www.gutternes.dk/past_polls.asp
Avatar billede mvk Nybegynder
11. februar 2005 - 09:17 #5
de skal jo egentlig også grupperes by Question - så det er hver poll der vises for sig. Jeg vil gerne vise alle de gamle polls dernedaf
Avatar billede fennec Nybegynder
11. februar 2005 - 09:38 #6
Nu er jeg ikke helt med længere.... Det er din database jeg ikke helt kan forstå.

Du oprette et ? i question tabellen. Til det skal der vel være forskellige svarmuligheder, også skal der gemmes antal stemmer på hver svarmulighed. Er det ikke sådan??
Avatar billede mvk Nybegynder
11. februar 2005 - 09:48 #7
jo. jeg opretter et spørgsmål i question tabellen og svarmuligheder i answer tabellen og de svar brugerne giver ligges i results tabellen
Avatar billede fennec Nybegynder
11. februar 2005 - 10:02 #8
Ok. Du manglede bare answer tabellen i post 09:12:25 :o)

Jeg er ikke sikker på hvordan din database så ser ud, men jeg ville nok lave det i 2 løkker:

set rs = conn.execute("select * from question")
do while not rs.eof
  set rs1 = conn.execute("select Answer.answer, count(results.Answer) from Answer LEFT JOIN results on results.Answer=Answer.aID where Answer.qID="& rs("IDquestion") &" group by Answer.answer order by Answer.answer")
  do while not rs1.eof
    'udskriv svar/antal
    rs1.MoveNext
  loop
  rs.MoveNext
loop

Kunne du evt smide din database ud, så jeg kan se den??? Så har jeg nemlig også noget test data...
Avatar billede mvk Nybegynder
11. februar 2005 - 10:05 #9
jeg har fundet en løsning:
http://www.gutternes.dk/past_polls.asp
det er nok ikke den optimale, men det ser ud til at virke

laver database udtræk inden i koden:
                          <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
          <%
Dim rsResults
Dim rsResults_numRows

Set rsResults = Server.CreateObject("ADODB.Recordset")
rsResults.ActiveConnection = MM_gutternes_STRING
rsResults.Source = "SELECT Answer, COUNT(Answer) AS Svar FROM results WHERE pollID = " & rsPolls.Fields.Item("IDquestion").Value & " GROUP BY Answer"
rsResults.CursorType = 0
rsResults.CursorLocation = 2
rsResults.LockType = 1
rsResults.Open()         

Dim rsVotes
Dim rsVotes_numRows

Set rsVotes = Server.CreateObject("ADODB.Recordset")
rsVotes.ActiveConnection = MM_gutternes_STRING
rsVotes.Source = "SELECT COUNT(IDresult) AS Total FROM results WHERE pollID = " & rsPolls.Fields.Item("IDquestion").Value & ""
rsVotes.CursorType = 0
rsVotes.CursorLocation = 2
rsVotes.LockType = 1
rsVotes.Open()
         
While ((Repeat2__numRows <> 0) AND (NOT rsResults.EOF))
%>
                              <tr>
                                <td><%
    if not (rsResults.eof or rsResults.bof) then

Response.write("<table border=0 cellspacing=0 cellpadding=0><tr align=left><td width=250>" & (rsResults.Fields.Item("Answer").Value) & " (" & (rsResults.Fields.Item("Svar").Value) & ")</td><td width=110><img src=images/percent.gif width=" & FormatNumber((rsResults.Fields.Item("Svar").Value)/(rsVotes.Fields.Item("Total").Value))*100 & " height=10></td><td width=70>" & FormatNumber((rsResults.Fields.Item("Svar").Value)/(rsVotes.Fields.Item("Total").Value))*100 & "%</td></tr></table>")
    else
        response.write("No answer")
    End if 
%></td>
                              </tr>
          <%
  Repeat2__index=Repeat2__index+1
  Repeat2__numRows=Repeat2__numRows-1
  rsResults.MoveNext()
Wend
%>                             
                          </table></td>
                        </tr>
      <tr>
                          <td>&nbsp;
                          </td>
                        </tr>
                        <tr>
                          <td>Votes:
      <%
    if not (rsVotes.eof or rsVotes.bof) then
        Response.write("" & (rsVotes.Fields.Item("Total").Value) & "")
    else
        response.write("No answers")
    End if 
%>                    </td>
Avatar billede mvk Nybegynder
11. februar 2005 - 10:53 #10
tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Nextway Software A/S

Software Architect

Aller Media A/S

IT Operations Engineer

Politiets Efterretningstjeneste

Fullstack softwareudvikler i PET

Operate Technology A/S

PHP-udvikler til Drupal

Capgemini Danmark A/S

SAP S/4HANA Finance Lead