Avatar billede steffansteffan Nybegynder
27. september 2004 - 14:16 Der er 17 kommentarer og
1 løsning

ASP: SQL Sætning!

Hvordan skrives denne linje ind i en sql sætning??

<%= Round((rs3("hitsfound") * 0.2 + ((rs32("found"))) + ((rs33("found"))) * 3), 2) %>
Avatar billede eagleeye Praktikant
27. september 2004 - 16:50 #1
sådan her for access:

select round(hitsfound*0.2+found+found*3,2) as antal from tabel
Avatar billede steffansteffan Nybegynder
27. september 2004 - 22:22 #2
Kan jeg få den ind i Order by så den laver en liste over den der har det højeste tal!
Avatar billede eagleeye Praktikant
27. september 2004 - 22:24 #3
Jo det kan man sådan her, man er nød til at skrive udregningen igen da access ikke kan order by et alias navn.:

order by round(hitsfound*0.2+found+found*3,2) desc
Avatar billede steffansteffan Nybegynder
27. september 2004 - 22:28 #4
Skal den så se sådan her ud?
sql = "select round(hitsfound*0.2+found+found*3,2) as antal from brugere where username=true order by round(hitsfound*0.2+found+found*3,2) desc"

eller bare!
sql = "select ' form brugere where username=true order by round(hitsfound*0.2+found+found*3,2) desc"
Avatar billede eagleeye Praktikant
27. september 2004 - 22:29 #5
Som den føste du har vist:

sql = "select round(hitsfound*0.2+found+found*3,2) as antal from brugere where username=true order by round(hitsfound*0.2+found+found*3,2) desc"
Avatar billede steffansteffan Nybegynder
27. september 2004 - 22:36 #6
Hmmfor fejl på den, for en fejl der siger:
Too few parameters. Expected 2.

Min komplete kode ser sådan her ud.
<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)

sql = "Select count(*) as found From kommentare where BrugerID = " & ID & ";"
Set rs32 = Server.CreateObject("ADODB.Recordset")
set rs32 = Connect.execute(SQL)

sql = "Select count(*) as found From emner where BrugerID = " & ID & ";"
Set rs33 = Server.CreateObject("ADODB.Recordset")
set rs33 = Connect.execute(SQL)

Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "select round(hitsfound*0.2+found+found*3,2) as antal from brugere where username=true order by round(hitsfound*0.2+found+found*3,2) desc"
Set rs78 = Server.CreateObject("ADODB.Recordset")
set rs78 = Connect.execute(SQL)
count = 50
While not rs78.eof and count > -1
count = count -1
%>
<a href="visprofil.asp?id=<%=RS78("ID")%>"><%=RS78("username")%></a>
<%
rs78.MoveNext
Wend
%>

Håber bare du vil hjælpe mig igennem det.
På forhånd mange tak.
Avatar billede eagleeye Praktikant
27. september 2004 - 22:44 #7
Arh, så det er ikke kolonne i samme tabel. Så kan det ikke gøres som vist.

Så skal du slå dem alle sammmen i SQL sætning med JOINS:


sql = "select brugere.id, brugere.username, round(count(links.hits)*0.2+count(kommentare.brugerID)+count(emner.brugerID)*3,2) as antal from ((brugere inner join links on brugere.id = links.brugerID) inner join kommentare on brugere.id = kommentare.brugerid) inner join emner on brugere.id = emner.brugerid where username=true and brugere.id = " & ID & " group by brugere.id, brugere.username order by round(count(links.hits)*0.2+count(kommentare.brugerID)+count(emner.brugerID)*3,2)  desc"
Avatar billede eagleeye Praktikant
27. september 2004 - 23:02 #8
Det dur heller ikke det jeg har vist....

Skal du hvade listet alle brugerne eller en bestemt bruger?
Avatar billede steffansteffan Nybegynder
27. september 2004 - 23:11 #9
Jojo det virker nu, men ikke helt som jeg ønsker det den udksriver jo kun en fordi den for fra URL'en altså:
id = Request.QueryString("id")
Så skriver den kun en bruger.
Hvis du jeg gerne vil lave et loop så den kigger hele min database igennem og finder de 10 bruger med den højeste.

Nu skal nok få alle min point hvis du hjælper mig igennem dette.
Avatar billede eagleeye Praktikant
27. september 2004 - 23:16 #10
Ok, så fjerner du bare dette fra where delen  and brugere.id = " & ID & "
og sætter en top 10 ind i toppen sådan her:


sql = "select top 10 brugere.id, brugere.username, round(count(links.hits)*0.2+count(kommentare.brugerID)+count(emner.brugerID)*3,2) as antal from ((brugere inner join links on brugere.id = links.brugerID) inner join kommentare on brugere.id = kommentare.brugerid) inner join emner on brugere.id = emner.brugerid where username=true group by brugere.id, brugere.username order by round(count(links.hits)*0.2+count(kommentare.brugerID)+count(emner.brugerID)*3,2)  desc"
Avatar billede steffansteffan Nybegynder
27. september 2004 - 23:29 #11
Forstår ikke helt hvad du mener med at jeg skal sætte det ind i toppen. Hvis du vil indsætte det i koden ville det være super :D Så kan jeg se hvad du mener
på forhånd tak ;)
Avatar billede eagleeye Praktikant
27. september 2004 - 23:33 #12
Hvis du vil havde en top 10 så skal du bruge din kode som du har og rette SQL sætningen til det sidste jeg har vist, så din kode bliver som dette:


<%
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")

sql = "select top 10 brugere.id, brugere.username, round(count(links.hits)*0.2+count(kommentare.brugerID)+count(emner.brugerID)*3,2) as antal from ((brugere inner join links on brugere.id = links.brugerID) inner join kommentare on brugere.id = kommentare.brugerid) inner join emner on brugere.id = emner.brugerid where username=true group by brugere.id, brugere.username order by round(count(links.hits)*0.2+count(kommentare.brugerID)+count(emner.brugerID)*3,2)  desc"

Set rs78 = Server.CreateObject("ADODB.Recordset")
set rs78 = Connect.execute(SQL)
count = 50
While not rs78.eof and count > -1
count = count -1
%>
<a href="visprofil.asp?id=<%=RS78("ID")%>"><%=RS78("username")%></a>
<%
rs78.MoveNext
Wend
%>
Avatar billede steffansteffan Nybegynder
27. september 2004 - 23:34 #13
argh tror jeg fandt ud af det. tjekker lige en sidste gang :D
Avatar billede steffansteffan Nybegynder
27. september 2004 - 23:37 #14
Så var den der, det er bare super, mange tak for hjælpen laver i en tråd til dig hvor du lige for lidt extra point.
Du har bare vild til det asp der, hvor har du endenlig lært det?
Avatar billede steffansteffan Nybegynder
27. september 2004 - 23:37 #15
Så var den der, det er bare super, mange tak for hjælpen laver i en tråd til dig hvor du lige for lidt extra point.
Du har bare vild til det asp der, hvor har du endenlig lært det?
Avatar billede steffansteffan Nybegynder
27. september 2004 - 23:42 #16
Avatar billede eagleeye Praktikant
27. september 2004 - 23:52 #17
ok tak ;) Jeg har programmeret meget i forbindelse med arbejde, og så kastede jeg mig over ASP da jeg skulle prøve at rode med databaser og hjemmesider..


Prøv at udskrive antal i den sidste det passer vist ikke??


Prøv at bruge denne SQL sætning i stedet for:

sql = "SELECT * FROM (SELECT brugere.id, brugere.username, round( (select count(links.hits) from links where links.brugerid=brugere.id)*0.2+(Select count(kommentare.brugerid) From kommentare where kommentare.BrugerID=brugere.id) + (select Count(emner.brugerid) from emner where brugerid=brugere.id)*3,2) AS antal FROM brugere WHERE brugere.username<>'b' GROUP BY brugere.id,brugere.username) ORDER BY antal DESC"
Avatar billede eagleeye Praktikant
27. september 2004 - 23:53 #18
hmmm glem den sidst sql sætning prø denne her:

sql = "SELECT * FROM (SELECT brugere.id, brugere.username, round( (select count(links.hits) from links where links.brugerid=brugere.id)*0.2+(Select count(kommentare.brugerid) From kommentare where kommentare.BrugerID=brugere.id) + (select Count(emner.brugerid) from emner where brugerid=brugere.id)*3,2) AS antal FROM brugere WHERE brugere.username=true GROUP BY brugere.id,brugere.username) ORDER BY antal 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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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