Seite 1 von 1

(gelöst) Begrenzte Anzahl an Datensätzen aus Abfrage filtern

Verfasst: Fr 18. Sep 2015, 13:20
von Jelu
Hallo zusammen,

ich habe eine Abfrage X in der alle Datensätze alphabetisch sortiert angezeigt werden.
Jetzt möchte ich weitere Abfragen erstellen die nur eine bestimmte Anzahl der Datensätze aus der Abfrage X anzeigen.

Also,
Abfrage 1 soll die Datensätze 1-50 aus der Abfrage X anzeigen,
Abfrage 2 soll die Datensätze 51-100 aus der Abfrage X anzeigen usw.

Erwähnt sei noch, dass die ID-Nummern in der Abfrage X durcheinander angezeigt werden und somit nicht der nummerischen Reihenfolge entsprechen.
.....sonst könnte man diese ja benutzen.....

Habt Ihr Ideen wie ich das umsetzen könnte?

Gruß
Jelu

Re: Begrenzte Anzahl an Datensätzen aus Abfrage filtern

Verfasst: Fr 18. Sep 2015, 20:19
von RobertG
Hallo Jelu,

schau einmal in den SQL-Code für die Abfrage. Der Begriff, den Du angeben musst, ist "Limit". Müsste im Handbuch ca. auf S. 240 stehen:
[{LIMIT <offset> <limit> | TOP <limit>}]:
Hiermit wird die Menge der anzuzeigenden Datensätze begrenzt. Mit LIMIT 10 20 werden
ab dem 11. Datensatz die folgenden 20 Datensätze angezeigt. Mit TOP 10 werden immer die
ersten 10 angezeigt. Dies ist gleichbedeutend mit LIMIT 0 10. LIMIT 10 0 lässt die ersten
10 Datensätze aus und zeigt alle Datensätze ab dem 11. Datensatz an.
Die Begrenzung kann zu Beginn (Direkt nach SELECT) oder auch zum Schluss des SQL-Kommandos stehen.

Gruß

Robert

Re: Begrenzte Anzahl an Datensätzen aus Abfrage filtern

Verfasst: Fr 18. Sep 2015, 22:11
von gogo
... als Ergänzung:

Limit-Anweisungen machen manchmal das Arbeiten mit Tabellen mit vielen Datensätzen bzw. Tabellen zu denen nur eine eingeschränkte Verbindung besteht (Server im Internet ...) im "Edit-Modus" erst möglich. Einschränkungen beim Sperren von großen Datensatzmengen können mit der Limit-Anweisung auf wenige Datensätze beschränkt werden - das verhindert Lags und Timeouts...

Re: Begrenzte Anzahl an Datensätzen aus Abfrage filtern

Verfasst: Fr 18. Sep 2015, 23:17
von Jelu
Vielen Dank für die Rückmeldung.
Ich habe ja heute die gedruckte Variante des Handbuchs erhalten und werd mir mal die Syntax reinziehen.
Momentan erschließt die mir sich noch nicht wirklich.....

Re: Begrenzte Anzahl an Datensätzen aus Abfrage filtern

Verfasst: Sa 19. Sep 2015, 09:14
von Jelu
Leute, Leute, es ist so einfach, dass ich mich schon schäme diese Frage überhaupt gestellt zu haben :oops: .
Im Handbuch ist das etwas zu allgemein erklärt und mir fehlte einfach da ein konkretes Beispiel.

Also, für alle die ebenfalls verzweifelt rumprobieren, hier die Erklärung.

Öffnet Eure Abfrage im SQL-Modus und hängt am Ende des SQL's einfach z.B. LIMIT 10 OFFSET 14 an.
LIMIT 10 sorgt dafür, dass Ihr nur 10 Datensätze für diese Abfrage angezeigt bekommt und
OFFSET 14 besagt, dass ab dem 15. Datensatz angezeigt wird.

Hier noch ein Beispiel aus der Praxis:
SELECT "ID" "ID", "Anrede" "Anrede", "Name" "Name", "Vorname" "Vorname", "Mail" "Mail", "Newsletter" "Newsletter", "formelle Ansprache", "Rufname" "Rufname", CASE WHEN ( "formelle Ansprache" = 1 AND "Anrede" = 'Frau' ) THEN 'Sehr geehrte Frau' || ' ' || "Name" || ',' WHEN ( "formelle Ansprache" = 1 AND "Anrede" = 'Herr' ) THEN 'Sehr geehrter Herr' || ' ' || "Name" || ',' WHEN ( "formelle Ansprache" = 0 AND "Rufname" IS NULL ) THEN 'Hallo' || ' ' || "Vorname" || ',' ELSE 'Hallo' || ' ' || "Rufname" || ',' END "Anredeneu" FROM "Tab_Kunden" WHERE "Newsletter" = 1 ORDER BY "Name" ASC, "Vorname" ASC LIMIT 90 OFFSET 270

Hier werden 90 Datensätze angezeigt (LIMIT 90) beginnend ab dem 271. Datensatz (OFFSET 270).

Re: Begrenzte Anzahl an Datensätzen aus Abfrage filtern

Verfasst: Sa 19. Sep 2015, 09:24
von RobertG
Hallo Jelu,

schreibe ruhig, wenn Dir etwas nach der Lektüre des Handbuches nicht klar wird. Ich bin da laufend an der Überarbeitung dran. Zur Zeit aber erst einmal in der Hauptsache beschäftigt mit der Zeichensetzung und ähnlichem, nicht mit weiteren Inhalten.

Hier die Syntax in einfacher Form:

Code: Alles auswählen

SELECT LIMIT 10 20 * FROM "Tabelle"
zeigt ab dem 11. Datensatz 20 Datensätze der Tabelle an. Geht allerdings nur mit der direkten Ausführung des SQL-Kommandos. Die Abfrage kann nicht zur Eingabe/Änderung von Daten benutzt werden.

Code: Alles auswählen

SELECT * FROM "Tabelle" LIMIT 20 OFFSET 10
zeigt den gleichen Bereich an, ist aber mit der grafischen Benutzeroberfläche kompatibel. Es können Daten eingegeben/verändert werden.

---------------------
Ergänzung: Ich werde in dem Handbuch ein Beispiel einfügen.

Gruß

Robert