Avatar billede voller Nybegynder
08. april 2002 - 19:18 Der er 11 kommentarer og
1 løsning

Ikke SELECT TOP, omvendt...

Davs.

Er der en måde at vælge f.eks. de 10 ældste rækker i en database. Altså ikke SELECT TOP 10 * FROM blog Order By Id Desc, men noget a la SELECT LAST eller SELECT BOTTOM... Hvad ved jeg?

Idéen skal bruges til et arkiv, der automatisk lister alle rækker i en database, minus de ti nyeste, der vises på forsiden som nyheder. Forsiden med de ti nyeste var ikke svær, det var bare den SELECT TOP 10 jeg skrev længere oppe, det er mere det med at få trukket linjer ud nedefra der er svær.

Hvis jeg bare fjerner Desc tager den godt nok linjer fra bunden, men så bliver de listet omvendt på siden (med den ældste dato øverst). Det synes jeg ikke om.

Hvad gør en nybegynder så?


Mvh. osv.

Avatar billede cbp Nybegynder
08. april 2002 - 19:19 #1
Select top 10
order by feltnavn DESC
Avatar billede cbp Nybegynder
08. april 2002 - 19:20 #2
Hov, undskyld, jeg kan vist ikke læse...
Avatar billede coltau Juniormester
08. april 2002 - 19:25 #3
Hent alle der skal vises i den korrekte rækkefølge og spring de første 10 over.

SQL = "select * from TabelNavn"
RS = conn.Open osv ...

Cnt = 0
do while not RS.EOF and (Cnt < 10)
  Cnt = Cnt + 1
  RS.MoveNext
loop

Kan bruges fordi der ikke er flere end 10.
Avatar billede eagleeye Praktikant
08. april 2002 - 20:35 #4
Ikke direkte med Access SQL men du kan lave sådan en SQL her:

strSQL = "SELECT * FROM blog WHERE ID IN (SELECT TOP 10 ID FROM blog ORDER BY ID DESC;);"
Avatar billede dr-kermit Nybegynder
08. april 2002 - 21:42 #5
Kommentar til eagleeye...

Det er da noget af det dummeste sql jeg har set, ikke for at træde dig over tærene eller noget...

mvh Kenneth Nielsen
Avatar billede eagleeye Praktikant
08. april 2002 - 21:51 #6
Til: dr-kermit

LOL  Du må da meget gerne vise mig hvordan man via Access SQL laver den nemere/bedre..

Den er squ da bedre end at fylde chach'en op med data fra databasen og kun udkrive de sidste 10 :)  men det er jo bare mig....
Avatar billede coltau Juniormester
08. april 2002 - 23:31 #7
Omvendt - udskrive alle andre end de første 10.
Avatar billede eagleeye Praktikant
08. april 2002 - 23:42 #8
Ok det gik lidt for hurtigt den udskrive kun de 10 sidste, men spørgsmålet var også lukke da jeg kikked på det.
Denne SQL hendter alle undtage de 10 første:

strSQL = "SELECT * FROM blog WHERE ID NOT IN (SELECT TOP 10 ID FROM blog;);"
Avatar billede dr-kermit Nybegynder
09. april 2002 - 00:13 #9
Eagleeye...

det du skriver opnåes bedre med en simpel
"select top 10 * from blog"
Du har gang i en sub select, som faktisk betyder at du har fat i 2 record set for at få de 10 første rækker ud.

mvh Kenneth
Avatar billede eagleeye Praktikant
09. april 2002 - 08:44 #10
Nej det gør jeg ikke, jeg får et recordset. Det er en SELECT i en SELCET ikke efter hinanden. Skulle jeg have flere reecord set skulle SQL være "SLECELT * FROM a;SELECT * FROM b;" så ville jeg fåto recordset som Access forøvrigt ikke understytter.

"select top 10 * from blog" vælger de 10 i toppen, men man skulle jo havde alle andre end de 10 i toppen.
Jeg skulle lige så godt skrive "SELECT * FROM blog WHERE ID NOT IN (1,2,3,4,5,6,7,8,9,10);", men så er man jo ikke sikker på at det er TOP 10 man har fået fat i. Derfor skiftes 1,2,3,4,5,6,7,8,9,10 ud med en SQL som vælge TOP 10 "SELECT TOP 10 ID FROM blog"

Nu er dette relativt let at lave en løkke som springe de 10 første over men det et meget bedre at få databasen til at lave arbejded med at få et rigtigt recordset som bare kan udskrives så, så man ikke skal tænke på at opfinde en masse løkker.

PRØV SELV den SQL uden at gætte på hvad den hendter ud.
Avatar billede dr-kermit Nybegynder
09. april 2002 - 09:55 #11
Ok, det er så fordi der er indsneget sig en fejl i din sql ;)

strSQL = "SELECT * FROM blog WHERE ID IN (SELECT TOP 10 ID FROM blog ORDER BY ID DESC;);"

Der Burde have været en NOT, så det var derfor jeg syntes det var en dum sql....

Kenneth
Avatar billede eagleeye Praktikant
09. april 2002 - 09:57 #12
Ja det er rigtig ved den første gik det lidt for hurtigt :)
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