|
| 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
| |
|
|