Avatar billede kroger Nybegynder
15. juni 2002 - 16:54 Der er 16 kommentarer og
1 løsning

Hiv de sidste fire...

Hvordan er det at jeg får hevet de 4 rækker der indeholder de højeste værdier i en kolonne, fra en database?
Avatar billede tuctoh Nybegynder
15. juni 2002 - 16:55 #1
SQL = "SELECT TOP 4 FROM mintabel ORDER BY myrow DESC"

hvor "mintabel" er tabellen i databasen, og "myrow" er det felt som du vil sortere fra
Avatar billede kroger Nybegynder
15. juni 2002 - 17:00 #2
Den funger skut ikke helt, jeg får stukket denne i hovedet:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'from'.

Kaldet ser sådan her ud:
set rscatlist=db.execute("select top 4 from products order by productid DESC")
Avatar billede hells Nybegynder
15. juni 2002 - 17:03 #3
Prøv:
<%
strSQL = "select * from tabel Order by vaerdier desc"
Set rscatlist = db.Execute(strSQL)

tal = 0

Do
  Response.Write rscatlist("vaerdier")
  rscatlist.MoveNext
  tal = tal + 1
Loop While NOT rs.EOF OR tal > 4
%>
Avatar billede kroger Nybegynder
15. juni 2002 - 17:07 #4
hell - så hiver den jo bare de første 4 den får stukket i hovedet. Det jeg er vil er at hive dem der har den højeste værdi i id feltet som er autonummeret, f.eks. id 56,57,58,59.

Noget i stil med:
SQL = "select * from products where id between de sidste 4 order by id" Eller hvordan den nu skal sammensættes
Avatar billede hells Nybegynder
15. juni 2002 - 17:11 #5
Dette hiver numrene fra id ud med det største først:
strSQL = "select * from tabel Order by id desc"

Ved så at bruge rscatlist.MoveNext 4 gange hiver man de 4 højeste tal ud.
Det er det, der sker i løkken.
Avatar billede hells Nybegynder
15. juni 2002 - 17:12 #6
og det er hells med s til sidst:)
Avatar billede kroger Nybegynder
15. juni 2002 - 17:13 #7
Woops...
Avatar billede kroger Nybegynder
15. juni 2002 - 17:29 #8
Hmm den gider ikke helt som mig. Koden er som følger:

set rscatlist=db.execute("select image,name,productid,price,notes from products order by productid DESC")

    'Display list of products
          counter = 0
        DO
       
            %>
        <td width="25%" align="center">
            <%= rscatlist("productid")%>
            </td>
            <%
                rscatlist.movenext
            counter = counter + 1
       
            Loop while not rscatlist.EOF OR counter > 4


Den viser så alle i databasen og så kommer denne bagefter:

ADODB.Field fejl '80020009'

Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den handling, programmet anmodede om, kræver en aktuel post.

?
Avatar billede hells Nybegynder
15. juni 2002 - 17:35 #9
Prøv med:
<%
strSQL = "select * from products Order by productid DESC"
Set rscatlist = db.Execute(strSQL)

'Display list of products
counter = 0
DO
Response.Write "<td width=""25%"" align=""center"">"
Response.Write rscatlist("productid")
Response.Write "</td>"

rscatlist.movenext
counter = counter + 1
       
Loop while not rscatlist.EOF OR counter > 4
%>
Avatar billede kroger Nybegynder
15. juni 2002 - 17:40 #10
JEg pastede din kode direkte ind, men den laver stadig samme nummer, som om den totalt ignorer conter variablen..
Avatar billede hells Nybegynder
15. juni 2002 - 17:42 #11
Så prøv at skifte:
Loop while not rscatlist.EOF OR counter > 4

ud med:
Loop While NOT rscatlist.EOF AND tal < 4
Avatar billede eagleeye Praktikant
15. juni 2002 - 17:51 #12
Er det access ? så kan du bare bruge TOP 4
Er det mySQL ? så kan du bruge LIMIT 0,4

Access: set rscatlist=db.execute("select TOP4 image,name,productid,price,notes from products order by productid DESC")

mySQL: set rscatlist=db.execute("select image,name,productid,price,notes from products order by productid DESC LIMIT 0,4")
Avatar billede eagleeye Praktikant
15. juni 2002 - 17:51 #13
hmm det mangler et mellemrum i den med access:

Access: set rscatlist=db.execute("select TOP 4 image,name,productid,price,notes from products order by productid DESC")
Avatar billede kroger Nybegynder
15. juni 2002 - 18:33 #14
Jeg takker hells... Og til eagleeye kan jeg fortælle at det er mssql, og din løsning stak mig denne:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'limit'.


Men det er underordnet nu da det virker med hells løsning...
Avatar billede eagleeye Praktikant
15. juni 2002 - 18:35 #15
Ja men MSSQL er også mere i med Access og ikke MySQL...
Avatar billede kroger Nybegynder
15. juni 2002 - 19:07 #16
Nåhh, du mente mysql. Det sq ikke jærnæn der kører for fulde kraft idag:)
Avatar billede eagleeye Praktikant
15. juni 2002 - 19:11 #17
Jeps, jeg ville tro at TOP 4 også virker i MSSQL men jeg er ikke sikker.

set rscatlist=db.execute("select TOP 4 image,name,productid,price,notes from products order by productid 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