Avatar billede bremer Nybegynder
25. december 2006 - 11:38 Der er 6 kommentarer og
2 løsninger

SQL - Select form top

Hej alle sammen og glædelig jul! (2006)

Ville høre om der er nogle der kunne hjælpe mig med, at løse dette lille problem.

Det handler om denne strSQL sætning

Jeg skal bruge/lave 6 strSQL'er men jeg bare ikke helt hvordan man selecter nogle præcis i databasen når det skal være den nyeste værdi herfra.

strSQL = "select top 1 * from film where meta = 'trailer' AND ok = 'ja' order by id desc"

strSQL = "select top 2 * from film where meta = 'trailer' AND ok = 'ja' order by id desc"

Osv...

Den virker så og sige fint nok - men jeg vil gerne ha' den til, at tag (selecter top) 1,2,3,4,5, og 6 fra min database ud fra min SQL sætning.

Jeg håber i forstår mig?!
Avatar billede madeindk Nybegynder
25. december 2006 - 16:26 #1
strSQL = "SELECT TOP 6 * from film where meta = 'trailer' AND ok = 'ja' order by id desc"
Set rs = Connct.Execute(strSQL)

Do while not rs.eof Then

Response.Write("post")

Rs.movenext
Loop
Avatar billede bremer Nybegynder
25. december 2006 - 17:57 #2
tak! - men det som jeg mener, at jeg skal lave én strSQL sætning som tager den første fra databasen

fx. strSQL = "SELECT TOP 1 * from film where meta = 'trailer' AND ok = 'ja' order by id desc"
Set rs = Connct.Execute(strSQL)

Men hvad skal jeg så skrive hvis jeg ønsker nummer 2 fra databasen?
og igen, hvad skal jeg skrive som nummer 3?
Avatar billede madeindk Nybegynder
25. december 2006 - 18:12 #3
Du kan bruge split :-)

Do While not rs.eof

  strID = strID & "," & rs("id")

rs.movenext
Loop

strSplitID = Split(strID,",")

Response.Write(strSplitID(1))

1 er post nummer et, 2 er post nummer 2 osv. :-)
Avatar billede plx Nybegynder
25. december 2006 - 18:31 #4
SELECT TOP 1 * FROM film WHERE meta = 'trailer' AND ok = 'ja' AND id NOT IN (SELECT TOP 3 id FROM film WHERE meta = 'trailer' AND ok = 'ja' ORDER BY id DESC) ORDER BY id DESC

vil måske virke. De øverste som ikke skal med, udelukkes i en subselect

Jeg kan ikke helt lure, om det er i samme script du skal have de 6 sql'er. I så fald, er der vel ingen grund til at trække dem ud enkeltvis
Avatar billede eagleeye Praktikant
26. december 2006 - 10:57 #5
Det kan gøres i stil med dette:

Start fra række x. Hent y rækker:

SQL = "SELECT TOP y * FROM (SELECT TOP x+y * FROM film WHERE meta = 'trailer' AND ok = 'ja' ORDER BY id) ORDER BY id DESC;"


Så vi du havde nr 3 så vil den se sådan her ud:

SQL = "SELECT TOP 1 * FROM (SELECT TOP 4 * FROM film WHERE meta = 'trailer' AND ok = 'ja' ORDER BY id) ORDER BY id DESC;"


men jeg er enig med plx hcis det er samme side hvorfor så ikke gøre som madeindk har vist i første kommentar, hvor alle 6 hentes ind i et recordset som du kan løbe igennem?
Avatar billede bremer Nybegynder
26. december 2006 - 13:59 #6
Tak for jeres hjælp! - jeg fik mit lille problem løst :)

Sender i lige nogle "svar" til mig, så jeg lige kan til dele nogle point.


Godt nytår!!
Avatar billede madeindk Nybegynder
26. december 2006 - 17:11 #7
Det var godt du fik det løst.

Her er mit svar, godt nytår til dig også :-)
Avatar billede eagleeye Praktikant
26. december 2006 - 21:24 #8
ok, og godt nytår til dig ;-)
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