2 Stimmen

Wie ziehe ich nur die für die Anzeige benötigten Datensätze aus einer Abfrage?

Ich verwende das datatables jquery plugin.

Ich möchte nur die Datensätze für die Anzeige mit jeder Abfrage an die Datenbank benötigen, weil es möglicherweise 100s von Tausenden von Datensätzen in der Tabelle. Also, anstatt so etwas zu tun und jeden Datensatz in der Tabelle aufzurufen und nur eine bestimmte Anzahl von ihnen zu einer Zeit, aufgrund der Paginierung zu zeigen...

<cfquery name="get_users" datasource="dsn">
    select user_id, first_name, last_name
    from users
</cfquery>

<cfloop query="get_users" startrow="#startrow#" endrow="#endrow#">
    ...
</cfloop>

Gibt es eine Möglichkeit, die startrow und endrow innerhalb des cfquery-Tags oder innerhalb sql irgendwie zu setzen, um nur eine bestimmte Anzahl von Datensätzen jedes Mal zu erhalten?

7voto

Ken Redler Punkte 23503

Sie müssen Ihren Ausgangspunkt und die Anzahl der Datensätze pro "Seite" an die Datenbank senden, damit sie nur diese Datensätze zurückgibt. Ich weiß nicht, welche Datenbank Sie verwenden, aber hier ist ein Beispiel für eine Abfrage für MS SQL Server (2005+):

SELECT user_id, first_name, last_name
FROM (
  SELECT ROW_NUMBER() OVER(
    ORDER BY last_name, first_name 
  ) AS rownum, user_id, first_name, last_name
  FROM users
) AS users_page
WHERE rownum >= 1000 AND rownum <= 1010
ORDER BY last_name, first_name

So erhalten Sie die Seite mit den Datensätzen von 1000 bis 1010.

Hier ist die mysql-Version:

SELECT user_id, first_name, last_name
FROM users
ORDER BY last_name, first_name
LIMIT 999, 10 /* offset is zero-indexed in mysql */

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X