Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

geht IMO nicht. ein COUNT nach dem LIMIT zählt eben nur das eingeschränkte ergebnisset. was du machen kannst, nachdem du scheinbar eine scriptsprache verwendest, ist den gesamt-COUNT ausserhalb der mir LIMIT eingeschränkten abfrage auszuwerten.

s'Amstel

Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben
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

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...