Schrift
[thread]8425[/thread]

Seiten-Jump (Seite 2)



<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
MartinR
 2006-10-19 09:45
#70854 #70854
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Und ich hatte mich schon so an das 'SQL_CALC_FOUND_ROWS' gewöhnt ...

Jetzt ist mir aber auch ein Licht aufgegangen. Ich adressiere ja meine DS nicht anhand der Nummerierung ihrer Position sondern anhand des PrimaryKeys. Also hat der 27te DS meinetwegen den key 456. Und mit dem kann natürlich keines der beiden Module was anfangen. Ich muss also erst mal herausfinden an welcher Position gem. ORDER BY sich ein bestimmter DS mit einem bestimmten key befindet. Kann das MySQL?
nepos
 2006-10-19 12:14
#70855 #70855
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=esskar,19.10.2006, 07:16]zu 2: klar, mann muss vorher ein COUNT(*) machen; kostet ja aber (meistens) nix.[/quote]
Damit waer ich vorsichtig. Ich hab hier ne Tabelle, auf die ein COUNT(*) so an ne Viertelstunde laeuft...
pq
 2006-10-19 13:02
#70856 #70856
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=esskar,19.10.2006, 07:16]zu 2: klar, mann muss vorher ein COUNT(*) machen; kostet ja aber (meistens) nix.[/quote]
wie kommst du darauf? natuerlich kostet ein COUNT(*) ... WHERE ...
etwas. das waere ja sonst zauberei.
einzig ein COUNT(*) *ohne* where-bedingung kostet auf MyISAM nix.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2006-10-19 13:04
#70857 #70857
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=MartinR,19.10.2006, 07:45]Und ich hatte mich schon so an das 'SQL_CALC_FOUND_ROWS' gewöhnt ...[/quote]
ob du nun SQL_CALC_FOUND_ROWS oder COUNT(*) benutzt, bleibt
sich ja wohl gleich (ausser das SQL_CALC_FOUND_ROWS vermutlich
effizienter ist, das kommt aber auf die anzahl der gefundenen datensätze an).

ansonsten verstehe ich das generelle problem nicht.
ich hab einen parameter offset für jede seite. wenn der offset 24 ist,
dann mach ich ein LIMIT 24, 12, und gut is. wo ist denn jetzt der haken?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
MartinR
 2006-10-19 13:58
#70858 #70858
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Das Problem ist, dass in der Anzeige ja die Seitennummern stehen sollen.

Also 1 ... 17 - 18 - 19 ... 237

Für die SQL-Abfrage ist aber die Seitennummer nicht von Bedeutung sondern die Anzahl der DS die je Seite angzeigt werden. Und da übernimmt Data::Page(set) eben die Berechnung und benutzerfreundlichen Ausgabe der anzuzeigenden Seitennummern aber leider ohne die DS selbst zu berücksichtigen.


Zitat aus http://dev.mysql.com/doc/refman/5.1/de/information-functions.html
Quote
Wenn Sie SELECT SQL_CALC_FOUND_ROWS verwenden, muss MySQL berechnen, wie viele Datensätze in der vollständigen Ergebnismenge enthalten sind. Allerdings ist dies schneller, als die Abfrage ohne LIMIT erneut auszuführen, weil die Ergebnismenge nicht an den Client gesendet werden muss.
Crian
 2006-10-23 18:07
#70859 #70859
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=esskar,19.10.2006, 07:16]zu 1: page = ceil( entry / entries_per_page );

3 = ceil( 27 / 12 );[/quote]
Dann kann man nur hoffen, dass bei großen Zahlen nicht plötzlich einer zuviel genommen wird, weil 240000/12 = 20000.000000001 ist oder so...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
MartinR
 2006-10-23 19:38
#70860 #70860
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
... deswegen ja auch 'ceil'
esskar
 2006-10-23 21:21
#70861 #70861
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Crian,23.10.2006, 16:07]weil 240000/12 = 20000.000000001[/quote]
seit wann denn das? ;)
Crian
 2006-10-24 14:42
#70862 #70862
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=MartinR,23.10.2006, 17:38]... deswegen ja auch 'ceil'[/quote]
ceil ist eine Mathemathische Funktion, die Zahlen auf die nächstgrößere Ganzzahl aufrundet, es sei denn, die Zahl ist schon eine Ganzzahl.

14.5 -> 15
14 -> 14

aber

14.0000000000000000001 -> 15

verstanden?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
MartinR
 2006-10-24 15:46
#70863 #70863
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Da hatte ich Dich falsch verstanden. Aber trotzdem verstehe ich nicht wie Du auf so ein krummes Ergebnis kommst ...
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2006-10-17 22:55.