Hi!
Sorry, ich bekomme es nicht hin. Kannst mir vielleicht nochmals helfen. Danke
Ich sprach davon, das Vergleichsergebnis in eine sortierbare Form zu bringen. Das war zwar korrekt, aber offensichtlich zu knapp formuliert, da du auch nicht mein Beispiel nicht verstanden hast.
Momentan hast du nur drei Bedingungen
lager > 0
lager = 0
lager < 0
Du brauchst aber Werte wie Zahlen, die sich gegeneinander vergleichen lassen
1 < 2 < 3
Du musst also aus dem Vergleich zu einem dieser Zahlenwerte kommen. Wenn du dir jetzt noch einmal mein Beispiel und die Arbeitsweise von IF() anschaust, solltest du zu dem Ergebnis kommen, dass das in Pseudo-Code folgendes macht:
wenn lager > 0
return 1
ansonsten
wenn lager = 0
return 2
ansonsten // wenn lager < 0
return 3
Nun kann MySQL anhand der 1, 2 oder 3 die Datensätze in eine Reihenfolge bringen. Damit hast du erst einmal nach Lagerbestand sortiert. Du wirst eine bestimmte Anzahl Ergebnisse der Ergebnisse der "Kategorie 1" (lager > 0) bekommen, der "Kategorie 2" (lager = 0) und der Kategorie 3 (lager < 0). Innerhalb dieser Kategorien, also bei gleichen Werten im ersten Sortierkriterium, soritert man mit einem zweiten durch Komma angehängtem Kriterium. Das ist in deinem Fall das Datum, das durch ein Komma an mein Beispiel anzuhängen wäre.
ORDER BY IF(lager >= 1,datum desc, IF(products_quantity <= 0,datum desc,3)
das ganze müste doch in etwa so aussehen oder? das klappt nur leider überhaupt nicht :-(. irgendwie stehe ich noch auf dem schlauch.
Nee, siehe oben, aber: nanu, was macht denn products_quantity hier? Ein neues Kriterium? Nun, prinzipiell kannst du natürlich auch unterschiedliche Kriterien miteinander vergleichen, wenn das dein Ziel ist. Hauptsache der Sortierausdruck erzeugt einen vergleichbaren Wert.
- müsste das ganze nicht zuerst noch irgendwie gruppiert werden?
Man gruppiert, wenn man Datensätze anhand von Kriterien _zusammenfassen_ möchte und _nur_ die Ergebnisse je Gruppe braucht. Das kannst du machen, wenn du die Anzahl, den maximalen/minimalen/durschnittlichen/... Wert pro Kriterium benötigst. Gruppieren im "GROUP BY"-Sinne ist also nicht das was du möchtest.
Lo!