/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL, hvordan vælges record 10 - 20 ?
Fra : Jakob Munck


Dato : 27-11-04 18:15

Jeg skal lave nogle listninger. I den ene skal jeg vise de 10 første poster
i et recordset, og det ser sådan ud, og virker udmærket:

SQL = "SELECT TOP 10 * FROM tbArtikler ORDER BY dato DESC"

Men i det næste recordset skal jeg vise record 10 - 20 ordnet på samme måde
som ovenstående. Hvordan skriver man det?


v.h.
Jakob Munck



 
 
Christian M. Nielsen (28-11-2004)
Kommentar
Fra : Christian M. Nielsen


Dato : 28-11-04 09:19

"Jakob Munck" <jm2_fjern_dette@webspeed.dk> wrote in message
news:41a8b5e9$0$237$edfadb0f@dread12.news.tele.dk...
> Jeg skal lave nogle listninger. I den ene skal jeg vise de 10 første
> poster i et recordset, og det ser sådan ud, og virker udmærket:
>
> SQL = "SELECT TOP 10 * FROM tbArtikler ORDER BY dato DESC"
>
> Men i det næste recordset skal jeg vise record 10 - 20 ordnet på samme
> måde som ovenstående. Hvordan skriver man det?


Du skal bruge paging.

Se her: http://asp.dk/articles.asp?mode=show_article&tech_id=1&article_id=50

--

Mvh Christian http://www.cmnielsen.dk
What capital has 164 letters in its name? See my web page to find out.
Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.



Jakob Munck (28-11-2004)
Kommentar
Fra : Jakob Munck


Dato : 28-11-04 20:51

>
> Du skal bruge paging.
>
> Se her:
> http://asp.dk/articles.asp?mode=show_article&tech_id=1&article_id=50

jeg er ikke interesseret i at lave paging, for det eneste jeg skal udskrive
er én liste, der viser records fra nummer 10 til nummer 20. Og jeg kan ikke
se at ovenstående artikel forklarer, hvordan dette gøres. Hvis den gør, kan
jeg i hvert fald ikke forstå svaret.

Jeg foretrækker at bruge almindelig SQL og ikke nogen særlig
"recordset-metode". Er det ikke muligt at ændre lidt på nedenstående, så den
virker?

SQL = "SELECT TOP 10 * FROM tbArtikler ORDER BY dato DESC"

v.h.
Jakob Munck



Dj Uncas (29-11-2004)
Kommentar
Fra : Dj Uncas


Dato : 29-11-04 00:09

> jeg er ikke interesseret i at lave paging, for det eneste jeg skal
> udskrive
> er én liste, der viser records fra nummer 10 til nummer 20. Og jeg kan
> ikke
> se at ovenstående artikel forklarer, hvordan dette gøres. Hvis den gør,
> kan
> jeg i hvert fald ikke forstå svaret.

Jeg har lidt samme problem. Jeg vil gerne have en side der viser alt fra
1-10, og en der viser resten, og det kan man jo ikke med paging, da den så
laver flere sider hvis der er mere en 10 på side 2. Nogle forslag?



finn elmgaard (29-11-2004)
Kommentar
Fra : finn elmgaard


Dato : 29-11-04 08:55


"Dj Uncas" <dj_uncas@aoa.dk> wrote in message
news:41aa5a72$0$86755$edfadb0f@dread11.news.tele.dk...
> > jeg er ikke interesseret i at lave paging, for det eneste jeg skal
> > udskrive
> > er én liste, der viser records fra nummer 10 til nummer 20. Og jeg kan
> > ikke
> > se at ovenstående artikel forklarer, hvordan dette gøres. Hvis den gør,
> > kan
> > jeg i hvert fald ikke forstå svaret.
>
> Jeg har lidt samme problem. Jeg vil gerne have en side der viser alt fra
> 1-10, og en der viser resten, og det kan man jo ikke med paging, da den så
> laver flere sider hvis der er mere en 10 på side 2. Nogle forslag?
>

HVIS du i din db har f.eks. en ID med autonummerering, kan du, når du har
udtrukket de 10 første, se den største ID blandt dem og gemme den i en
variabel, MaxID. Herefter kan du bruge det som kriterie i din SQL, altså:

SQL="...........WHERE ID > " & MaxID

mvh
Finn



Jens Gyldenkærne Cla~ (29-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-11-04 10:16

Jakob Munck skrev:

> Jeg foretrækker at bruge almindelig SQL og ikke nogen særlig
> "recordset-metode". Er det ikke muligt at ændre lidt på
> nedenstående, så den virker?

Hvilken database bruger du?

Du kan tage et kig på Troels Arvins sammenlignende side om
databaser: <http://troels.arvin.dk/db/rdbms/#select-limit-offset>.

Som det fremgår er det enkelt at lave en offset-forespørgsel i
mysql. Access er ikke med i listen (det er kun "rigtige"
databasesystemer), men ofte bruger Access samme syntaks som MSSQL -
så prøv at bruge den, hvis du vil teste i Access.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

terje (29-11-2004)
Kommentar
Fra : terje


Dato : 29-11-04 12:24

Jens Gyldenkærne Clausen wrote:
> Jakob Munck skrev:
>
>
>>Jeg foretrækker at bruge almindelig SQL og ikke nogen særlig
>>"recordset-metode". Er det ikke muligt at ændre lidt på
>>nedenstående, så den virker?

Hvis det dreier seg om et mindre antall poster så kan du også bruke en
teller i en loop:

Select Top 30

Do
If iTeller => 10 Then Response.Write rs(iTeller)
iTeller = iTeller + 1
If iTeller > 20 Then Exit Do
Loop

terje?

FFunky (29-11-2004)
Kommentar
Fra : FFunky


Dato : 29-11-04 17:20

"Jakob Munck"
> Jeg skal lave nogle listninger. I den ene skal jeg vise de 10 første
poster
> i et recordset, og det ser sådan ud, og virker udmærket:
>
> SQL = "SELECT TOP 10 * FROM tbArtikler ORDER BY dato DESC"
>
> Men i det næste recordset skal jeg vise record 10 - 20 ordnet på samme
måde
> som ovenstående. Hvordan skriver man det?
>
>
> v.h.
> Jakob Munck

Lav et udtræk en der trækker top 20 ud og fra den mængde trækker top 10 fra.

Sådan lige et hurtig skud fra hoften: SELECT TOP 20 FROM tblArtikler WHERE
NOT EXIST (SELECT TOP 10 FROM tblArtikler)
Jeg kan ikke huske den korrekte syntax, men det må være den retning. Jeg
ville
løse det med en temporær tabel og noget kode der traverserer to recordsæt.
Jeg vil gerne prøve at lave en SQL sætning der kan, fordi jeg er ikke særlig
god
til SQL, men det bliver først efter SIMPSONS. Og inden da har SQL hajerne
været der. ;0)
--
Med venlig hilsen
Tom Jensen
www.FFSoft.dk




FFunky (29-11-2004)
Kommentar
Fra : FFunky


Dato : 29-11-04 21:17

"FFunky"
LoebID er Primærnøgle og et autonummer
Point er en karakter for løbet
Navn er navnet på personen der har gennemført løbet

Tabeloprettelses forespørgsel:
SELECT TOP 10 tblLoeb.LoebID, tblLoeb.Point, tblLoeb.Navn INTO tblLoebTMP
FROM tblLoeb;

Den laver tabellen tblLoebTMP som indeholder de 10 højeste point

Udvælgelsesforespørgsel:
SELECT top 10 tblLoeb.LoebID, tblLoeb.Point, tblLoeb.Navn
FROM tblLoeb
WHERE (((tblLoeb.LoebID) Not In (SELECT LoebID FROM tblLoebTMP)));

Den udtrækker top 10 fra tblLoeb som IKKE findes i tblLoebTMP

Det kan uden tvivl løses med een SQL sætning.

--
Med venlig hilsen
Tom Jensen
www.FFSoft.dk



Bjarne Damsgaard (29-11-2004)
Kommentar
Fra : Bjarne Damsgaard


Dato : 29-11-04 23:01

On Sat, 27 Nov 2004 18:14:31 +0100, "Jakob Munck"
<jm2_fjern_dette@webspeed.dk> wrote:

>Jeg skal lave nogle listninger. I den ene skal jeg vise de 10 første poster
>i et recordset, og det ser sådan ud, og virker udmærket:
>
>SQL = "SELECT TOP 10 * FROM tbArtikler ORDER BY dato DESC"
>
>Men i det næste recordset skal jeg vise record 10 - 20 ordnet på samme måde
>som ovenstående. Hvordan skriver man det?

Prøv med denne:

SELECT * FROM
(SELECT TOP 10 * FROM
(SELECT TOP 20 * FROM tbArtikler ORDER BY dato DESC)
ORDER BY dato)
ORDER BY dato DESC;

Hvis du erstatter 20 med fx. 50 får du record 40 - 50 osv.

mvh
Bjarne Damsgaard

Jakob Munck (07-12-2004)
Kommentar
Fra : Jakob Munck


Dato : 07-12-04 11:21

jeg takker jer alle for besvarelserne, ikke mindst den sidste løsning, som
ser ud til at være den letteste. Den vil jeg bruge.

v.h.
Jakob Munck



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste