Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL-Query: Limit ???

Empfohlene Antworten

Veröffentlicht

Hallo, ich habe eine Datenbank mit Messages und frage sie zur Zeit mit folgender Abfrage für einen Empfaenger ab.

SELECT *

FROM `NA_messages`

WHERE empfaenger = 'Netsrac'

ORDER BY datum

Nun bekomme ich eine Liste von 300 Einträgen. Die ältesten unten und die neusten Oben.

Jetzt mein Problem. Ich will immer nur die 200 Ältesten anzeigen. Also quasi von unten ab bis 200.

Hat jemand eine Idee wie ich das umstellen kann? Ich hatte an ein "Limit" gedacht, aber das Hilft mir ja nicht wirklich weiter, da ich ja die ID der letzten Mail nicht weiß..

Klar könnte ich hergehen und ein order by datum ASC machen und das auf 200 begrenzen. Aber dann müßte mein Programm dieses Result noch einmal umgekehrt sortieren... Diese Logik gehört mir eher in die Abfrage als ins Programm...

Ich verwende MySQL 4.0 und PHP als Sprache.

Danke für eure Hilfe.

Original geschrieben von Net-srac

SELECT *

FROM `NA_messages`

WHERE empfaenger = 'Netsrac'

ORDER BY datum

Nun bekomme ich eine Liste von 300 Einträgen. Die ältesten unten und die neusten Oben.

Jetzt mein Problem. Ich will immer nur die 200 Ältesten anzeigen. Also quasi von unten ab bis 200.

Also ob das bei MySQL auch geht, kann ich dir nicht sagen, aber meine Idee war eine "TopX" abfrage zu machen und diese dann asc zu sortieren...

Ich kenne MySQL nicht, evtl hilfts dir trotzdem:

Unter ORacle gehts so, wenn ich dein Problem richtig verstehe:

select * from (

select edat from `NA_messages` where empfaenger = 'Netsrac' AND rownum<200 order by datum asc)

order by datum desc;

Original geschrieben von dgr243

Also ob das bei MySQL auch geht, kann ich dir nicht sagen, aber meine Idee war eine "TopX" abfrage zu machen und diese dann asc zu sortieren...

Das kann ich doch dann aber nicht in einer Query machen oder?

Was genau meinst du mit TopX ?

@Brunswick, soweit ich weiß unterstützt Mysql4 leider noch keine Subselects. Das ist erst ab Version 5 geplant, die aber noch nicht Stable ist.

Also wird diese Query auch nicht gehen. :(

Danke Trotzdem ;)

Original geschrieben von Net-srac

Das kann ich doch dann aber nicht in einer Query machen oder?

Was genau meinst du mit TopX ?

Der MS SQL Server kennt die Gruppenfunktion "TOPx" (x = int) und zeigt dir die x grössten (oder mit order by x asc halt die kleinsten) Werte an....

Original geschrieben von Net-srac

soweit ich weiß unterstützt Mysql4 leider noch keine Subselects. Das ist erst ab Version 5 geplant, die aber noch nicht Stable ist.

Ab 4.1 gibts schon Subselects, ist aber auch noch nicht stable: http://www.mysql.com/doc/en/Nutshell_4.1_features.html

LIMIT ist für Mysql das ensprechende.

SELECT * FROM Table WHERE Feld>Wert LIMIT 200

Original geschrieben von Wolle

Ab 4.1 gibts schon Subselects, ist aber auch noch nicht stable: http://www.mysql.com/doc/en/Nutshell_4.1_features.html

LIMIT ist für Mysql das ensprechende.

SELECT * FROM Table WHERE Feld>Wert LIMIT 200

Naja, wie auch immer....

ich hab jetzt in einer for Schleife die Länge des Results um eins verringert und dann mit mysql_data_seek den Zeiger gesetzt...

also lasse ich quasi einfach das Result in umgekehrter Reihenfolge ausgeben. Ob das jetzt so performant ist kann ich leider nicht einschätzen...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.