PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL: SELECT Abfrage mit Limit die Gesamtzahl der Datensätze angezeigt bekommen



Biko
07-06-2007, 16:21
Hallo zusammen,

PHPMyAdmin macht ja oft Abfragen in der folgenden Art:

SELECT * FROM table WHERE username LIKE '%string%' LIMIT 0 , 30

Jetzt kommen als Ergebnis immer die abgefragten Datensätze, klar, aber es kommt auch immer etwas in der Art:


Zeige Datensätze 0 - 29 (43 insgesamt, die Abfrage dauerte 0.0459 sek.)

Wie kann ich jetzt auf die Datensätze "insgesamt" zugreifen, wenn ich in meiner Abfrage ein Limit gesetzt habe?

Thx,
Biko

Christoph
08-06-2007, 07:17
Wie kann ich jetzt auf die Datensätze "insgesamt" zugreifen, wenn ich in meiner Abfrage ein Limit gesetzt habe?

Gar nicht. Der Sinn von LIMIT ist es ja gerade, dass man nur auf die mit LIMIT spezifizierten Tupel zugreifen kann. Lass das LIMIT einfach weg.

RHBaum
13-06-2007, 14:58
LIMIT ist Imho auch kein Bestandteil von SQL Ansi oder ?

Limit macht auch wirklich nur Sinn wenn man ne limitierte Menge braucht, also nur die ersten 10 von .... Also gut fuer die Performance.

Fuer "gib mir zuerst dier ersten 10, dann die naechsten 10 ... " ist es nicht geeignet.

Ciao ...

Waxolunist
13-06-2007, 22:44
Fuer "gib mir zuerst dier ersten 10, dann die naechsten 10 ... " ist es nicht geeignet.
Dafür verwende ich "where rownum between x and y"

mwanaheri
14-06-2007, 07:16
Das Arbeiten mit limit und offset macht natürlich eigentlich nur bei sortierten Daten Sinn, aber das ist dem OP wohl auch klar. Um ein 'select count' kommt man aber wohl nicht drumrum.

Ratte
16-06-2007, 18:47
Du kannst den Select mit limit folgendermaßen ausführen:

SELECT SQL_CALC_FOUND_ROWS * FROM table LIMIT 10
und als zweiten select:

SELECT FOUND_ROWS()
ergibt die tatsächliche Anzahl der Datensätze.

Außerdem kann man Limit auch mit Offset aufrufen
LIMIT Offset,Anzahl