Zum Inhalt springen

SQL Abfrage X. kleineres Element von Y


speedi

Empfohlene Beiträge

Hi,

ich kenne mich mit SQL nur sehr bedingt aus. Jedenfalls muss ich nun eine Abfrage formulieren, welche mir einen bestimmten Datensatz ausgibt.

Ich habe meine Tabelle bei der die Spalte MsgID den Primärschlüssel (int) darstellt.

MsgIDs treten immer nur einmal auf, können jedoch lückenhaft sein

(z.B. 2,6,7,8,15,17,19...).

Jetzt kann es sein, dass ich die Letzte Message vor Message Nr. 15 brauche (in dem Fall wäre das die Nr. 8), das Frage ich mit

"SELECT * FROM messages10103 where MsgId < 15 order by MsgID DESC LIMIT 1"

ab.

Wie müsste ich aber nun die Abfrage formulieren, damit ich das x. kleinere von 15 bekommen (z.B. x wäre 3, dann würde ich gern die MsgID 6 abragen).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

Wie müsste ich aber nun die Abfrage formulieren, damit ich das x. kleinere von 15 bekommen.

nur mal so interessehalber: wozu soll das denn jemals gut sein? Gibt es da eine konkrete Problemstellung? Und wenn ja, kannst du die hier dann angeben? :confused::confused::confused:

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

In der Datenbank werden in regelmäßigen Abständen Statusinformationen eines bestimmten Objekts mit fortlaufenden MessageIDs (die ID kann sozusagen fast als eine Art Tmestamp angesehen werden; nur dass sie keine direkte Uhrzeit darstellt) gespeichert. Es kann vorkommen, dass Messages aus der Datenbank gelöscht werden (deshalb kann ich nicht davon ausgehen, dass nach MsgID 8 auch wirklich MsgID 9 kommt.

Das X. kleinere Element von Y. muss ich abfragen, um die Daten mit einem bestimmten Zeitraster in einem Programm anzeigen zu können.

Mein Programm zeigt immer 7 Datensätze parallel in einer Art Tabelle an, wenn man einen Datensatz mit kleinerer oder größerer MsgID sehen will scrollt man im Programm nach oben oder unten und das Programm lädt die entsprechenden Informationen aus der Datenbank.

Wenn jetzt allerdings mehrere 1000 einträge in der Datenbank sind kann das mit dem scrollen, so eine Sache werden, wenn man immer in einzelschritten scrollt. Deshalb möchte ich dann nur noch jeden 10. Datensatz (oder so...) anzeigen. Die genaue Zahl stellt der User über einen Regler ein.

Natürlich könnte ich das Problem auch programmseitig lösen, indem ich einfach die 10 nächsten Datensätze ausgebe bei denen die MsgID kleiner ist und dann im Programm durchgehen bis zum letzten, aber da die Datensätze mitunter sehr viele Informationen Enthalten und schonmal 1 MB groß sein können, würde ich mit so einer Lösung unnütz Netzlast schaffen, die Datenbank stressen, mein Programm stressen und ehe ich mich versehen brauch ich HighEndHardware.

ist mit sicherheit irgend so ein workaround, weil andere umsetzungstechniken nicht bekannt sind.

In meinen Augen ist es die sauberste Lösung die Datenbank gleich genau das zu fragen, was ich wissen will, anstelle das zu fragen, was ich fragen kann um mir dann die entsprechende Antwort auzusortieren.

Oder würde hier irgendwer versuchen für eine Autofahrt von München nach Frankfurt sich alle Routen von München nach Hessen ausgeben zu lassen um sich dann aus denen die Route nach Frankfurt rauszusuchen?!

Bearbeitet von speedi
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verwende MySQL.

Ich denke nicht das man das was ich machen will als Blättern bezeichnet. Wie gesagt ich will nur das die Datenbank zu einem bestimmten Datensatz (Nr. (int) X springt) und von da eine Anzahl ((int)Y) Datensätze nach oben geht.

Aber ich werd mal in google suchen (hab ich zwar schon, aber ok, vielleicht bringt das neue Stichwort ja was.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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