erweiterte Between Abfrage (MySQL)

a.woermann

Grünschnabel
Hallo zusammen,
ich bin ganz neu und suche ganz dringen eine Lösung für mein Problem.

Ist-Stand von BETWEEN:
ID 1 | Zucker = 1 | Zucker1 = 15
ID 2 | Zucker = 8 | Zucker1 = 9
ID 3 | Zucker = 4 | Zucker1 = 20


Die BETWEEN Abfrage:
((Zucker BETWEEN 3 AND 6) or (Zucker1 BETWEEN 3 AND 6))
Ergebnis = 1

So jetzt zu meinem Anliegen.

Ich würde gerne eine Abfrage erstellen die folgenden Wert ermittelt.

Alle Zucker & Zucker1 Werte die alle Werte 3-5 beinhalten.
Ergebnis= 3

Also soll meine Abfrage alle Zwischenwerte ermitteln.
Gibt es dafür eine MySQL Lösung??


Danke Euch
 
SQL:
SELECT * FROM (
SELECT *, ABS(SUM(Zucker1 - Zucker)) AS Betrag FROM tabellenname  GROUP BY id
) _tmp WHERE Betrag BETWEEN 3 AND 5
Versuch's mal damit..
 
Zuletzt bearbeitet:
Guter Ansatz, aber leider geht das so nicht.
Bei der ID3 wäre der Wert Zucker1 (20) weniger Zucker (4) das Ergebnis 16 und wäre nicht innerhalb des BETWEEN´s.
Bei ID1 und ID2 verhält sich das genau so. :-(
 
So, ich hab es.

Meine Lösung, falls jemand auch sowas sucht.

SELECT * FROM tabellenname WHERE LEAST('15', Zucker1) >= GREATEST('1', Zucker)

Hier werden die Werte bestens ausgegeben und liegen innerhalb meines BETWEEN-Werts.

Danke abdellaui, dank dir habe ich einen anderes Ansatz gefunden. :)
 
Moin,

vielleicht fehlt mir die Erfahrung, aber ich sehe bei der Fragestellung keine Komplexität, die ein LEAST()/GREATEST() erfordert.
Wenn der durch die beiden Parametern Min /Max definierte Bereich vollständig im Bereich zwischen Zucker und Zucker1 liegen soll, dann reicht doch

SQL:
SELECT * FROM tabellenname WHERE zucker<=ParamMin and zucker1 >= ParamMax;
--  im Beispiel: SELECT * FROM tabellenname WHERE zucker<=1 and zucker1 >= 15;

(Unterstellt wird auch hier, dass zucker immer kleiner gleich zucker1 ist, aber das gilt auch in den anderen Variationen.)

Die Perioden-Vergleichsmimik ist sicherlich für viele Problemstellungen hilfreich, hier aber wohl nicht erforderlich.

Grüße
Biber
 

Neue Beiträge

Zurück