Zum Inhalt springen

MySQL - Count und Limit in einem


Empfohlene Beiträge

Hallo zusammen,

ich möchte gern in einer Datenbankabfrage wo ich zum Schluss ein limit drin habe, gern aber auch ein Count auf alle Datensätze machen. Das Problem ist wenn ich eine Zählvariable einbaue, zählt der natürlich nur das, was die Datenbankabfrage bringt, und da sind limitangaben mit drin.

Hat jemand eine Idee?

Link zu diesem Kommentar
Auf anderen Seiten teilen

es gibt nur die möglichkeit einer zweiten abfrage, allerdings kannst du das ja mit SQL_CALC_FOUND_ROWS kombinieren.

AS Workshop » MySQL: Get total number of rows when using LIMIT

MySQL AB :: MySQL 3.23, 4.0, 4.1 Reference Manual :: 12.10.3 Information Functions

mönsch, liest hier eigentlich nie jemand die anleitungen?

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wollte jetzt net gerne noch ne DB-Abfrage machen, :hells: sondern schon alles in einem Statement :D Mensch i-wie muss das doch möglich sein :(

Count ist eine aggregat-funktion, die genau 1 Ergebnis liefert. Wie willst du das mit X Sätzen einer Abfrage kombinieren?

Das geht allenfalls über weitere aggregat-funktionen wie z.B. sum kombiniert mit group by etc. Aber wenn deine Abfrage mehr als einen Satz liefert... :upps

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, erstmal vielen Dank für die schnelle und sehr gute Hilfe.

Habe mir die Seite einmal durchgelesen, fand ich sehr gut erklärt, aber leider nicht so genau wo es eingebaut werden muss :( Auch auf der MySql-Doku-Seite konnte ich aus der Erklärung nicht schlauer werden.

Auf der 1. Seite heißt es ja, das man trotzdem eine 2. Query ausführen muss, diese aber durch die ..FOUND_ROWS Funktion nicht die Datenbank so sehr beansprucht.

Kannst du mir zur Einbaumethode vielleicht noch ein paar erste Schritte geben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

du verwendest ganz einfach die klausel SQL_CALC_FOUND_ROWS in deinem ursprünglichen SQL-query. dies berechnet die anzahl der zeilen, *ohne* LIMIT zu berücksichtigen.

$query_limited = "SELECT SQL_CALC_FOUND_ROWS * FROM deinetabelle ... LIMIT ...;";

anschliessend musst du nur noch die vorausberechneten zeilen abfragen:

$query_count = "SELECT FOUND_ROWS();";

fertig.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich nehme doch eine Zählvariable, speicher aber alles aus der Datenbank in ein Array, wo ich dann später mit einem Limit drauf zugreifen kann.

ich behaupte halt, dass das wesentlich unperformanter und speicherfressender ist, als die genau dafür zur verfügung stehenden funktionen - die sogar ein gewisses caching anbieten - zu verwenden.

würde mich interessieren, wie sehr das den laufenden prozess von PHP aufbläht, wenn man die ganze tabelle - cool, z.b. 100 million DS - in ein array packt :D

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...