Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3479[/thread]

MySQL Gesamtanzahl Treffer



<< >> 8 Einträge, 1 Seite
Gast Gast
 2004-07-10 17:52
#32367 #32367
Hi!

Ich habe eine Suchanfrage mit DBI auf eine MySQL Datenbank
Code: (dl )
1
2
	my $statement="SELECT haendler_id, kategorie_id, name, strasse, plz, ort, telefon1, telefon2, fax, internet, email, a, b ". 
"FROM haendler WHERE ($namensbedingung) LIMIT $begin, $anzahl";


Nun möchte ich Seitenweise weiterspringen, also $begin immer um 10 erhöhen. Wie bekomme ich raus wieviele Treffer er ohne das LIMIT gehabt hätte um darzustellen wie viele Seiten ich habe? Da gibt es doch bestimmt ne Spezialvariable dafür.
Kennt jemand eine Liste, wo all solche Variablen drinstehen? Also z.B. wie lange es gedauert hat um die Treffer zu finden u.s.w.

Danke!
jan
 2004-07-10 17:59
#32368 #32368
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
SELECT count(*) FROM table WHERE suchkriterium = 1;

und schon hast du ein feld "count(*)", indem die ergebnisanzahl steht.
root
 2004-07-10 18:28
#32369 #32369
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
Also muss ich es über eine seperate Anfrage machen?!

Ich dachte das DBI wüßte es eh? So wie das Autoincrement:
my $id=$dbh->{'mysql_insertid'};
jan
 2004-07-10 18:30
#32370 #32370
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
nein. das ist auch sinnvoll, imho, denn: wenn du zB sagst "gib mir nur die ersten zehn ergebnisse", warum sollte mysql alle, womöglich tausende, finden und zählen, nachdem es die aufgabe schon erfüllt hat - so rein performance-technisch.
root
 2004-07-10 18:35
#32371 #32371
User since
2003-08-15
120 Artikel
BenutzerIn
[default_avatar]
Da magst du recht haben!
Strat
 2004-07-11 00:46
#32372 #32372
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
haengt davon ab, was du machen willst, manchmal geht es auch ohne count-abfrage: wenn keine noetig ist, weil du einfach einen Link namens Weiter setzen willst, dann frage einfach eins mehr ab als noetig (z.B. 11 anstelle von 10), und wenn der letzte Wert gesetzt ist (also der 11.), dann gib den Weiter-Link aus ...

wenn doch, dann duerfte sowas wie
Code: (dl )
my ($count) = $dbh->selectrow_array("SELECT COUNT(id) FROM table");

ziemlich am schnellsten sein\n\n

<!--EDIT|Strat|1089492441-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
jan10001
 2004-07-11 14:30
#32373 #32373
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
@Strat
Gute Idee, habe auch schon oft so gearbeitet.

Wenn du trotzdem die Anzahl der Einträge brauchst kannst du die auch in einer Datei zwischenspeichern, allerdings vergiss dann nicht nach einen insert oder delete die Datei zu aktualisieren.\n\n

<!--EDIT|jan10001|1089541829-->
Strat
 2004-07-11 18:56
#32374 #32374
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn ich mich recht erinnere, habe ich es beim neuen board groesstenteils so gemacht, wie jan sagte: ich habe z.B. in pb_user_settings als caching-massnahme die anzahl der postings gespeichert.. falls das mal auseinanderlaeuft, koennte man die einfach mit einem cronjob periodisch korrigieren\n\n

<!--EDIT|Strat|1089557797-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 8 Einträge, 1 Seite



View all threads created 2004-07-10 17:52.