intervallhantering med SQL

Databaser & SQL

2 svar · 223 visningar · startad av Naaz

Medlem sedan maj 200333 inlägg
Trådstart#1

Hej!
Jag har en tabell som heter Nyheter som innehåller logiskt nog nyheter. På websidan vill jag endast visa 15 nyheter åt gången. De resterande nyheterna ska man komma åt genom att klicka på länken som anger nästa intervall (1-15, 16-30, 31-45, osv). De senaste nyheterna ska komma först.

Så därför försöker jag skriva en SP (Skriven för SQL Server) som tar två argument:
* en siffra som anger start,
* en siffra som anger antal poster som ska hämtas (tex 15).

Så när användaren klickar på länken "16-30" ska jag visa 15 nyheter men det ska vara den 16:e senaste nyheten och 14 nyheter som skrevs innan den 16:e nyheten (hoppas ni förstår hur jag menar).

Mitt problem är att start och nyhetsID inte är samma sak. Så jag kan inte använda nyhets id. Hur skriver man en sån SP? Ska man använda TOP, COUNT, annat och i sånafall kan ni ge ett exempel hur sql-koden ser ut?

Mvh,
Naz

Medlem sedan juli 20011 304 inlägg
#2

Jag håller på med en liknande funktion med har också lite problem. Du kan ju se om mitt problem löser sig och i så fall använda det :)

Medlem sedan dec. 200012 464 inlägg
#3

En variant är att skapa en temp-tabell

create procedure mc_2 (@start int, @antal int)
as
set nocount on
create table #t (id int identity, <övriga kolumner>)

insert into #t select * from nyheter

select * from #t where id between @start and @start + @antal

Det går att använda top men då måste du bygga sql-satsen dynamiskt

exec ('select top ' + @antal + ' * from nyheter 
where id not in (select top ' + @start + 'id from nyheter')

Du kan ju testa vad som är bäst.

251 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)