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?
Annonceindlæg fra Pax8
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
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")
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 %>
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
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.
og det er hells med s til sidst:)
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. ?
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 %>
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..
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
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")
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")
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...
15. juni 2002 - 18:35
#15
Ja men MSSQL er også mere i med Access og ikke MySQL...
15. juni 2002 - 19:07
#16
Nåhh, du mente mysql. Det sq ikke jærnæn der kører for fulde kraft idag:)
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")
Kurser inden for grundlæggende programmering