secret_3des
Lieutenant
- Registriert
- Sep. 2005
- Beiträge
- 822
Hallo!
Ich möchte folgendes per SQL-Abfrage realisieren:
Es soll nach Werten gesucht werden, die in einem bestimmten Intervall liegen [up,low]. Werden aber keine Werte in diesem Intervall gefunden, sollen die Werte gefunden werden, die möglichst nahe an den Grenzen des Intervalls liegen.
Mir ist im Prinzip klar, wie es funktionieren könnte. Ich habe aber leider noch keine Möglichkeit gefunden, das auch so umzusetzen. Es wäre deshalb toll, wenn mir da jemand helfen könnte.
Bisheriger Ansatz ist:
oder auch:
Das Problem ist aber, dass es nicht funktioniert.. Im THEN bzw. ELSE Fall sind keine Abfragen (sondern nur einzelne Werte) erlaubt.
Wer hat eine Idee wie das funktionieren könnte?
Vielen Dank im Voraus!
Gruß
Tom
Ich möchte folgendes per SQL-Abfrage realisieren:
Es soll nach Werten gesucht werden, die in einem bestimmten Intervall liegen [up,low]. Werden aber keine Werte in diesem Intervall gefunden, sollen die Werte gefunden werden, die möglichst nahe an den Grenzen des Intervalls liegen.
Mir ist im Prinzip klar, wie es funktionieren könnte. Ich habe aber leider noch keine Möglichkeit gefunden, das auch so umzusetzen. Es wäre deshalb toll, wenn mir da jemand helfen könnte.
Bisheriger Ansatz ist:
Code:
SELECT MIN(ABS(attribut - (up+low)/2)) AS result FROM tabelle;
// wenn es einen Wert im Intervall gibt
IF (result < (up-low)/2) THEN
SELECT * FROM tabelle WHERE attribut > low AND attribut < up;
// es gibt keinen Wert im Intervall
ELSE
SELECT * FROM tabelle WHERE result = ABS(attribut-(up+low)/2);
oder auch:
Code:
SELECT CASE
(SELECT COUNT(*) FROM tabelle WHERE attribut > low AND attribut < 50000)
WHEN 0 THEN
SELECT * FROM tabelle WHERE attribut > low AND attribut < up;
ELSE
SELECT * FROM tabelle WHERE ABS(attribut - (low+up)/2) =
(SELECT MIN(ABS(attribut - (up+low)/2)) AS result FROM tabelle);
Das Problem ist aber, dass es nicht funktioniert.. Im THEN bzw. ELSE Fall sind keine Abfragen (sondern nur einzelne Werte) erlaubt.
Wer hat eine Idee wie das funktionieren könnte?
Vielen Dank im Voraus!
Gruß
Tom