Avatar billede webbygger Nybegynder
21. november 2005 - 21:06 Der er 14 kommentarer og
1 løsning

Hjælp til 2 SQL Sætninger

SQL Sætninger er ikke lige min stærke side, så sidder der nogen eksperter, der kan hjælpe?????

Hvordan fletter jeg disse to sætninger samme, så jeg får gennemsnit og vote på hver billed/post ?

  "SELECT TOP 10 * FROM tekst ORDER BY hits desc"

            "SELECT DISTINCTROW Count([kommen].[vote]) AS [Sum Of vote], Avg([kommen].[vote]) AS [Gennemsnit Of vote] FROM kommen WHERE kategori="&("id")


Den anden SQL sætning har jeg overhovede ingen ide om, hvordan den skal se ud ;o(
  Men jeg kunne godt tænke mig den viste TOP 10 top score/bedømte poster!!!
Avatar billede eagleeye Praktikant
21. november 2005 - 22:29 #1
Du skal havde fat i noget group by og order by i stil med dette:

SELECT TOP 10 Count([kommen].[vote]) AS [AntalStemmer], Avg([kommen].[vote]) AS [Gennemsnit] FROM kommen GROUP BY kategori ORDER BY Avg([kommen].[vote]) DESC
Avatar billede webbygger Nybegynder
21. november 2005 - 22:39 #2
Hmmm der er noget der passer, men script ser sådan ud inden jeg indsætter din SQL

<%
          strSQL =  "SELECT TOP 10 * FROM tekst ORDER BY hits desc"
          Set rs = Conn.Execute (strSQL)%>
       
        <table width="80%" border="0" align="center" cellspacing="5">
<%
i = 0
While Not rs.EOF
if i mod 1 = 0 then
response.write "<tr>"
end if
%>
            <td>
             
          <table width="100%" border="0" align="center" cellpadding="0" cellspacing="5" class="ramme">
                <tr>
                  <td width="125" align="right" valign="top" >
                    <div align="left">Hits : <% = rs("hits")%>
                      <a href="vis.asp?rid=<%=rs("id") & "&amp;t=" & rs("kategori")%> ">
                      <%billed_url = rs("billede")
                      if billed_url<>"" then
                      Response.write "<br>" & "<br>" & "<img src='" & "thumbnails100" & "/" & Mid(billed_url,9) & "' class=""minus_ramme"" alt=""billede"" title=""lystfiskerensnet"" >"
                          end if%></a>                     
                    </div>
                   
                    </td>
                  <td align="left" valign="middle"><br> <strong><% = rs("titel")%></strong><br>
                    Indsendt af:&nbsp;&nbsp;<% = rs("indsendt") %><br>
                        <%    Str = rs("bemarkning") 
If len(Str) > 35 Then
  Response.write(left(Str, 35) & "  .....")
Else
  Response.Write Str
end if
                   
                    %>
                    <br>
                   
                    <a href="vis.asp?rid=<%=rs("id") & "&amp;t=" & rs("kategori")%> "> <B>>> se mere</B><br></a> </td>
                </tr>
                <tr>
                <td width="150">
                  <% sql2 = "SELECT DISTINCTROW Count([kommen].[vote]) AS [Sum Of vote], Avg([kommen].[vote]) AS [Gennemsnit Of vote] FROM kommen WHERE kategori="&("id")
        Set Rs2 = Conn.Execute(Sql2)
                StrVote = rs2("Sum Of vote")
                If StrVote < "1" Then
                  Response.Write ""
                          Else 
    response.write "<b> Point:</b> " & "&nbsp;" & "&nbsp;" & CInt(rs2("Gennemsnit Of vote"))  & "&nbsp;" & "&nbsp;" & "<b> Stemmer:</b>" & "&nbsp;" & "&nbsp;" & rs2("Sum Of vote")  End If %>
                </td>
               
                <td>&nbsp;</td>
                </tr>
              </table>
</td>


<%

i = i+1
if i mod 1 = 0 then
response.write "</tr>"
end if
RS.MoveNext
wend
Conn.Close
Set Conn = Nothing
%>
Avatar billede eagleeye Praktikant
21. november 2005 - 22:49 #3
så i stedet for de bliver sorteret efter "hits" så skal de sorteres efter "vote"?
Avatar billede webbygger Nybegynder
21. november 2005 - 22:55 #4
Jeg er "lidt" krævende..............
Jeg ønsker 1 side, hvor de bliver sorteret efter hits ( ligesom den her http://www.web-byggeren.dk/upload/populareste.asp der ikke virker)

derud over en side efter højst bedømte (gennemsnit)....gir det nogen mening?
Avatar billede eagleeye Praktikant
21. november 2005 - 23:01 #5
ok men siden som sortere efter hits ser da ud til at virke eller??

Hvis du vil havde en side som sortere efter votes så skal SQL sætning være i stil med dette:

SELECT tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, Avg(kommen.vote) AS GennemsnitAfVote, Count(kommen.vote) AS AntalAfVote
FROM tekst INNER JOIN kommen ON tekst.id = kommen.kategori
GROUP BY tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, kommen.vote
ORDER BY kommen.vote DESC
Avatar billede eagleeye Praktikant
21. november 2005 - 23:05 #6
så din kode bliver til stil med dette:


<%
          strSQL =  "SELECT TOP 10 tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, Avg(kommen.vote) AS [Gennemsnit Of vote], Count(kommen.vote) AS [Sum Of vote] FROM tekst INNER JOIN kommen ON tekst.id = kommen.kategori GROUP BY tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, kommen.vote ORDER BY kommen.vote DESC"
          Set rs = Conn.Execute (strSQL)%>
       
        <table width="80%" border="0" align="center" cellspacing="5">
<%
i = 0
While Not rs.EOF
if i mod 1 = 0 then
response.write "<tr>"
end if
%>
            <td>
             
          <table width="100%" border="0" align="center" cellpadding="0" cellspacing="5" class="ramme">
                <tr>
                  <td width="125" align="right" valign="top" >
                    <div align="left">Hits : <% = rs("hits")%>
                      <a href="vis.asp?rid=<%=rs("id") & "&amp;t=" & rs("kategori")%> ">
                      <%billed_url = rs("billede")
                      if billed_url<>"" then
                      Response.write "<br>" & "<br>" & "<img src='" & "thumbnails100" & "/" & Mid(billed_url,9) & "' class=""minus_ramme"" alt=""billede"" title=""lystfiskerensnet"" >"
                          end if%></a>                     
                    </div>
                   
                    </td>
                  <td align="left" valign="middle"><br> <strong><% = rs("titel")%></strong><br>
                    Indsendt af:&nbsp;&nbsp;<% = rs("indsendt") %><br>
                        <%    Str = rs("bemarkning") 
If len(Str) > 35 Then
  Response.write(left(Str, 35) & "  .....")
Else
  Response.Write Str
end if
                   
                    %>
                    <br>
                   
                    <a href="vis.asp?rid=<%=rs("id") & "&amp;t=" & rs("kategori")%> "> <B>>> se mere</B><br></a> </td>
                </tr>
                <tr>
                <td width="150">
                StrVote = rs("Sum Of vote")
                If StrVote < "1" Then
                  Response.Write ""
                          Else 
    response.write "<b> Point:</b> " & "&nbsp;" & "&nbsp;" & CInt(rs("Gennemsnit Of vote"))  & "&nbsp;" & "&nbsp;" & "<b> Stemmer:</b>" & "&nbsp;" & "&nbsp;" & rs("Sum Of vote")  End If %>
                </td>
               
                <td>&nbsp;</td>
                </tr>
              </table>
</td>


<%

i = i+1
if i mod 1 = 0 then
response.write "</tr>"
end if
RS.MoveNext
wend
Conn.Close
Set Conn = Nothing
%>
Avatar billede webbygger Nybegynder
21. november 2005 - 23:05 #7
Den side med hits fungere også, men som du ser vise den Point:  9  Stemmer:  1  på alle billeder og det passer jo ikke!!!!!!!
Avatar billede eagleeye Praktikant
21. november 2005 - 23:06 #8
Hvordan linkes en stemme til et billede?
Avatar billede webbygger Nybegynder
21. november 2005 - 23:09 #9
tabel tekst= id
tabel kommen= kategori
Avatar billede eagleeye Praktikant
21. november 2005 - 23:09 #10
I din kode til siden http://www.web-byggeren.dk/upload/populareste.asp prøv at rette din SQL sætning:

"SELECT DISTINCTROW Count([kommen].[vote]) AS [Sum Of vote], Avg([kommen].[vote]) AS [Gennemsnit Of vote] FROM kommen WHERE kategori="&("id")


Til dette:

"SELECT DISTINCTROW Count([kommen].[vote]) AS [Sum Of vote], Avg([kommen].[vote]) AS [Gennemsnit Of vote] FROM kommen WHERE kategori="&rs("id")
Avatar billede webbygger Nybegynder
21. november 2005 - 23:12 #11
siden Top bedømte er næsten i vinkel http://www.web-byggeren.dk/upload/topbedomte.asp som du ser må billed 3 det bedste billed, at det har 10 i snit ud af 4 stemmer, kan man lave, så det bliver rigtig?????
Avatar billede webbygger Nybegynder
21. november 2005 - 23:14 #12
Kanon eagleeye den virker ;o))
Avatar billede eagleeye Praktikant
21. november 2005 - 23:16 #13
Jo man kan også sætte antal stemmer ind i order by, så prøv at rette SQL sætningen til dette sådan den sortere først på gennemsnit så hvis gennemsnit er ens så vise den med flest stemmer:

          strSQL =  "SELECT TOP 10 tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, Avg(kommen.vote) AS [Gennemsnit Of vote], Count(kommen.vote) AS [Sum Of vote] FROM tekst INNER JOIN kommen ON tekst.id = kommen.kategori GROUP BY tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, kommen.vote ORDER BY AVG(kommen.vote) DESC, COUNT(kommen.vote) DESC"
Avatar billede webbygger Nybegynder
21. november 2005 - 23:21 #14
Hold da op!!!!!!!!!!!!!!!!!
Det virker selvfølge som altid når du laver noget Eagleeye!!!

Tusind mange tak for hjælpen
Avatar billede webbygger Nybegynder
30. november 2005 - 22:35 #15
Eagleeye - jeg ved ikke om du "hænger" på endnu!!!
Men der er opstået et problem efter jeg har tastede alt data ind.....Den side som skal viste de 10 top bedømte billeder-viser 21 billeder nu pga. stemmelighed???

Kan man ikke tvinge den til kun at vis 10 trods det?
Du kan se siden her http://www.lystfiskerens.net/galleri/topbedomte.asp

Og SQL-sætningen som jeg bruger ser sådan ud
    "SELECT TOP 10 tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, Avg(kommen.vote) AS [Gennemsnit Of vote], Count(kommen.vote) AS [Sum Of vote] FROM tekst INNER JOIN kommen ON tekst.id = kommen.pic_id GROUP BY tekst.id, tekst.kategori, tekst.hits, tekst.billede, tekst.titel, tekst.indsendt, tekst.bemarkning, kommen.vote ORDER BY AVG(kommen.vote) DESC, COUNT(kommen.vote) DESC, "
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
Kurser inden for grundlæggende programmering

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