SQL Sortierung / Prioritäten setzen

Hi…
Habe derzeit ein Problem eine SQL-Abfrage richtig zu sortieren…

Den Aufbau der Tabelle ist wie folgt:
[attachment=0]db.png[/attachment]
Mein Wunsch ist es, dass bei seat_open und points zuerst die NULL Werte ausgegeben werden und danach der Rest DESC.

Meine aktuelle Vermutung ist, dass ich das nur mit einem 2ten Query hinbekommen würde…
Hat jemand Ideen wie ich es auch in einem hinbekommen kann?

Hier noch meine aktuelle SQL-Abfrage:

ps: Das Verhalten von seat_open und points ist gleich…
D.h. je höher seat_open, desto höher ist auch points…

lg

Du kannst es auch mit einer geschachtelten Abfrage lösen:

(SELECT * FROM tables WHERE tournament_id='$id' AND seat_open = NULL) UNION (SELECT * FROM tables WHERE tournament_id='$id' ORDER BY seat_open DESC)
Als Ergebnis bekommst du dann die Liste mit zuerst den NULL-Zeilen und anschließend dem Rest absteigend sortiert.

Führt leider zum selben Ergebnis
[attachment=0]db.png[/attachment]

Versuche es mal so, bei meinem Test mit 0 statt NULL in einer meiner Tabellen hat das hin.

(SELECT * FROM tables WHERE tournament_id='$id' AND seat_open = NULL) UNION (SELECT * FROM tables WHERE tournament_id='$id' AND seat_open != NULL ORDER BY seat_open DESC)

NULL kann man nicht mit den „üblichen“ Vergleichsoperatoren vergleichen. NULL = NULL ergibt false.

Um explizit zu prüfen, ob ein Wert (nicht) NULL ist, muss IS (NOT) NULL verwendet werden; bzw. IS_NULL() als Funktion.

Und das kann man natürlich auch in der ORDER BY-Klausel verwenden:

(Die Details, ob du dazwischen || oder && haben willst, ob du anschließend zuerst nach seat_open oder points sortieren willst etc. kannst du selber überlegen.)

Lag an den Vergleichsoperatoren… Danke!