Hallo Pieter,
Es sei eine Tabelle :
ID | Value
0 10
1 20
2 30
3 40Nun brauche ich eine Abfrage, die mir zu einem beliebigen Wert, der nicht in der Tabelle vorkommt, den "nächsttieferen" Datensatz zurückliefert. ZB schmeiß ich den Value 23 rein und bekomme den Datensatz mit der ID 1, Value 20 zurück.
Das Ergebnis ist in diesem Fall eindeutig.
Was hättest Du gerne in folgendem Fall?
ID | Value
0 10
1 20
2 20
3 30
Grundsätzlich gibt es die verschiedensten Möglichkeiten. Zum Beispiel bietet es sich an, zunächst eine geeignete WHERE-Klausel zu verwenden, die Datensätze geeignet zu sortieren und die Ergebnismenge wie gewünscht zu limitieren.
Bitte beachte, dass die SQL-Syntax zum Limitieren der Ergebnismenge vom SQL-Dialekt des DBMS abhängt.
Eine andere Möglichkeit wäre es mit einem Subselect und der Aggregatsfunktion MAX() zu arbeiten.
Was Du verwenden kannst, wie die Abfrage exakt aussehen kann, das hängt von Deinem Datenbankmanagementsystem (DBMS) ab - und von dem Sprachumfang, den das DBMS unterstützt. Beim weit verbreiteten DBMS MySQL ist es extrem versionsabhängig, was Du (nicht) verwenden kannst.
Wenn Dir meine Angaben noch nicht genügend weiterhelfen, so gib uns bitte Dein DBMS inklusive Version an.
Freundliche Grüße
Vinzenz