WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.06.2003, 17:10   #1
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard MS SQL + Paging

huhu!

ich hab folgendes problem:

ich bastle grade zum spass an einem forum rum und da habe ich mir gedacht, ich probier mal aus, wie das mit dem ms-sql-server so funzt, um mal was neues zu lernen.

und schon stosse ich auf ein problem.

ich lese aus einer tabelle (welche alle posts zu einem forums-thread beinhaltet) diese posts sortiert nach erzeugungsdatum aus. jetzt möchte ich paging bedingt immer nur die ersten 20, die zweiten 20, usw. haben. muss aber nicht immer 20 sein, sondern das sollte man variabel einstellen können.
doch da mit limit nix is in mssql und man die anzahl der zeilen, die mit TOP zurückgeliefert werden, nicht dynamisch halten kann (z.b. über einen stored-procedures-parameter), stehe ich hier ein bisschen an.

eine temp-table dafür zu erzeugen erscheint mir ein wenig heftig und auch meine google-recherche brachte mich nicht so richtig weiter.

kennt jemand von euch eine gute möglichkeit des pagings direkt im ms-sql-server, bei der der umfang der zeilen pro page und die page selbst dynamisch gehalten werden kann (z.b. 20 posts der 3. page = post 41-60)?

danke im voraus!
Gonte ist offline   Mit Zitat antworten
Alt 03.06.2003, 18:14   #2
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

Google ist dein Freund:

http://www.webmasterworld.com/forum47/384.htm

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 03.06.2003, 19:34   #3
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

vielen dank käptn für deine antwort!

die idee mit der temporären tabelle is mir selbst auch schon gekommen, jedoch hoffte ich auf eine andere lösung, die vielleicht etwas eleganter zu implementieren ist.
Gonte ist offline   Mit Zitat antworten
Alt 03.06.2003, 20:04   #4
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

Aso, sorry...

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 04.06.2003, 07:04   #5
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi !

ich hab sowas auch programmiert und verwende zum db zugriff adodb.
da machts keinen unterschied, ob man sql-server oder mysql verwendet - genauer gesagt: man müsste sich beim source von adodb anschauen, wie die das gemacht haben, dass man die datensätze seitenweise bekommt.

heißt irgendwas mit "adodb_pager" - findest sicher selbst.
(habs momentan nicht da zum nachschaun)

...theoretisch könnt ma ja auch alle datensätze der abfrage in ein array einlesen dann sollts auch einfach sein, nur bestimmte davon auszugeben - außerdem muss man dann nur 1 mal auf die db zugreifen.

obs gscheit ist, weiß ich nicht - hab erst begonnen, mich mit php zu beschäftigen.

fg
-hannes
Biri ist offline   Mit Zitat antworten
Alt 04.06.2003, 11:39   #6
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

Hm,... hab nirgends PHP gelesen, ich dachte eher es geht um ASP...

Den ganzen Table auszulesen halte ich für weit übertrieben, was machst du mit z.B. 10 MB wenn du nur 100k (und das ist schon einiges auf einer Seite) anzeigen willst, oder der User nach einer Seite gefunden hätte was er sucht...

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 04.06.2003, 12:51   #7
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

@käptn:

stimmt natürlich - hab das wohl falsch ausgedrückt bzw. dabei zu sehr am "mein projekt" gedacht.

bei diesem weiß ich, dass es pro person ca. 100 dieser zugeordnete datensätzt gibt und ich im pager jeweis 5 anzeige - in diesem konkreten fall find ichs gscheit, diese alle gleich ins memory zu lesen, damit nicht beim blättern jedesmal ein db-zugriff erfolgen muss.

im aktuellen wcm ist sogar ein artikel drin über "zeitkosten" eines db-zugriffes.

@Gonte: verwendest asp oder php ?

fg
biri
Biri ist offline   Mit Zitat antworten
Alt 04.06.2003, 13:21   #8
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

das ganze wird mit asp.net auf c#-basis realisiert.

ich habe jetzt einige verschiedene möglichkeiten durchgetestet, wobei ich mich dann doch für jene mit der temp-table entschieden habe, weil sie interessanterweise die performanteste ist.

etwas eleganter wäre folgender workaround gewesen:

select * from
(
select top @postsperpage * from
(
select top @postsperpage*@page * from posts order by generatedate asc
)
order by generatedate desc
)
order by generatedate asc;

doch leider lässt sich ja top in einer stored procedure mit einem parameter nicht "dynamisieren".

und das paging in c# selbst durchzuführen erscheint mir doch etwas gewagt.

vielen dank euch 2!
Gonte ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:17 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag