T-Rex: Sortierung wenn Element nicht gefunden wird

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

  1. 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.

    1. 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.

  2. 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

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Quad und Quadflieg.

  3. 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