Sortierung wenn Element nicht gefunden wird
T-Rex
- datenbank
0 dedlfix1 dedlfix
0 Matthias Apsel0 T-Rex
Ola,
hab ein "nice to have" Problem. Lösung ist für das Projekt nicht sonderlich wichtig, wäre aber nett.
Da gibt es Kommentare. Die kann man bewerten. Bewertung ist ganz simple gut/schlecht. Der User muss einen Kommentar natürlich nicht bewerten.
Jetzt lade ich alle Kommentare und lade mittels Subquery auch die eigene Bewertung dazu. In dem Feld steht "1" für gut, "-1" für schlecht" oder "NULL" wenn der User noch nicht bewertet hat.
Jetzt würde ich die Kommentare gerne wie folgt sortieren: "1", "NULL", "-1". Das funktioniert so natürlich nicht.
Gibt es eine einfache Lösung? Kann man eventuell einen Defaultwert vergeben? IF NULL THEN "0" oder so?
Hoffe die MySQL Version ist nicht wichtig.
T-Rex
Gruß
unsortierter
Tach!
Jetzt würde ich die Kommentare gerne wie folgt sortieren: "1", "NULL", "-1". Das funktioniert so natürlich nicht.
Gibt es eine einfache Lösung?
Definiere einfach!
Kann man eventuell einen Defaultwert vergeben?
Vielleicht was mit COALESCE()?
IF NULL THEN "0" oder so?
Ja klar, auch das gibts. IF()-Funktion und auch Vergleiche auf NULL. Kapitel Funktionen -> Control Flow Functions.
dedlfix.
Tach!
Jetzt würde ich die Kommentare gerne wie folgt sortieren: "1", "NULL", "-1". Das funktioniert so natürlich nicht.
Kann man eventuell einen Defaultwert vergeben?
Vielleicht was mit COALESCE()?
Nochmal zu diesem Vorschlag:
COALESCE(kommentarfeld, 0)
liefert entweder die 1 oder -1, weil diese ja nicht NULL und damit die ersten Nicht-NULL-Werte in der Liste der Argumente sind. Im Falle von NULL kommt der nächste Wert an die Reihe, hier 0. Somit gibts als Ergebnis 1, 0, -1 und danach lässt es sich einfach sortieren.
dedlfix.
Om nah hoo pez nyeetz, unsortierter T-Rex!
Gibt es eine einfache Lösung? Kann man eventuell einen Defaultwert vergeben? IF NULL THEN "0" oder so?
SELECT foo
WHERE bar AND `Bewertung` IS NOT NULL
SELECT `Bewertung` IS NOT NULL
Matthias
Danke für eure Hilfe!
Ich hab es jetzt so gelöst:
CASE WHEN (subquery) IS NULL THEN 0 ELSE (subquery) END AS field
Ein simples prüfen auf IS NULL funktioniert nicht, da die der vote, den der User gemacht hat, somit nicht mitkommen würde. Ein -1 Vote würde dann als 1 aufschlagen, da -1 NOT NULL ist.
Gruß
NOT NULL THEN
T-Rex