dedlfix: MySQL Datensatzzählung mit COUNT(*)

Beitrag lesen

Tach!

In einer MySQL Datenbank habe ich die 1199 häufigsten deutschen Familiennamen gespeichert. Es sind _garantiert_ 1199 unique, mit der id nach Häufigkeit geordnete Datensätze. Die id 1 hat den Namen "Müller", die id 1199 den Namen "Böck". Das kann ich mit einem SELECT f.familienname WHERE id = ... auch überprüfen. Den Beweis, dass es auch wirklich _exakt_ 1199 Datensätze sind, liefert zB. das leere Ergebnis bei SELECT f.familienname WHERE id = 1200.

Nein, das hat keine Beweiskraft. Das sagt nur, dass es keinen Datensatz mit der ID 1200 gibt. Es sagt nicht aus, wieviele andere existieren.

Wenn ich MySQL nun einfach alle Datensätze zählen lassen möchte, dann mache ich das (so wie einst hier von dedlfix gelernt) mit einem SELECT COUNT(*), also SELECT COUNT(*) FROM familiennamen.

Und ich wüsste auch nicht, warum MySQL da falsch zählen sollte.

Für eine gestaffelte Ausgabe von Datensätzen wie zB. 10 pro Anzeigeseite muss ich die _exakte_ Gesamtanzahl wissen, um auch entsprechend korrekte Links zur letzten Seite platzieren zu können.

Da nimmt man aber nicht eine gleiche zweite Abfrage mit COUNT() sondern SELECT SQL_CALC_FOUND_ROWS ... in der ersten und dann eine zweite mit SELECT FOUND_ROWS();

dedlfix.