dedlfix: MySQL Datensatzzählung mit COUNT(*)

Beitrag lesen

Tach!

Du hast Recht, 2 Abfragen sind umständlich. Eigentlich brauche ich ja nur die 2 Schritte umkehren. Zuerst mit _einer_ Abfrage die Daten holen, dann mit dem $anzahl = $query->rowcount() feststellen, wie viele Datensätze vorhanden sind und entsprechende Navigationslinks berechnen und setzen.

Nein, damit bekommst du nur die Anzahl der Datensätze in der Ergebnismenge. Du brauchst auch noch die Gesamtanzahl der gleichen Menge, aber ohne LIMIT.

ich habe mir das jetzt nochmal durch den Kopf gehen lassen. Nein, ich _muss_ zuerst wissen, wie viele Datensätze _insgesamt_ für ein entsprechendes SELECT zu finden sind und _dann erst_ hole ich mir die Daten von den paar Datensätzen ab, die auf einer Seite ausgegeben werden sollen.

Jein, die Reihenfolge ist nicht weiter relevant. Es findet ja alles im selben Script statt und da kannst du nach Bedarf zwischenspeichern und später zugreifen.

Kommen also doch Deine 2 Funktioenn ins Spiel?!

Die machen es etwas einfacher. SQL_CALC_FOUND_ROWS berechnet nebenbei die Anzahl der Datensätze, die ohne eine LIMIT-Klausel in der Ergebnismenge landen würde. Die ermittelte Anzahl musst du dann nur noch mit einem einfachen SELECT FOUND_ROWS() abfragen. Das spart, die Query nochmal vollständig aber nur mit COUNT(*) und ohne LIMIT abzusetzen, sowie eine erneute Zählung auf dem Server.

dedlfix.