Rene: SQL Abfrage absteigend sortieren nach Werten einer Gruppe

Hi,
ich benötige eine SQL-Abfrage, die die Werte einer Gruppe absteigend sortiert ausgibt. Bisher hatte ich folgende SQL-Abfrage

"SELECT * FROM db_table WHERE id IN ($str_id) ORDER BY person1 DESC, night1 DESC, person2 DESC, night2 DESC, person3a DESC, night3a DESC"

Die Felder "person1" bis "night3a" können Werte von 0-9 annehmen. Ich benötige jetzt eine Abfrage, die mir die Werte von "person1", "person2" und "person3a" (Gruppe 1) sowie "night1", "night2" und "night3a" (Gruppe 2) absteigend sortiert.

Beispiel:
"person1" hat den Wert 3
"person2" hat den Wert 1
"person3a" hat den Wert 7
"night1" hat den Wert 6
"night2" hat den Wert 4
"night3a" hat den Wert 2

Bei der Auswertung der SQL-Abfrage muss also die Reihenfolge wie folgt aussehen:
"person2"
"person1"
"person3a"
"night3a"
"night2"
"night1"

Kann ich das mit einer SQL-Abfrage bewerkstelligen oder muss ich die SQL-Abfrage hinterher selbst wie gewünscht sortieren?

Danke und Gruß,
René

  1. Wenn ich das richtig verstehe, möchtest Du die Reihenfolge der Ausgabe der Datenfelder ändern, wenn bestimmte Bedingungen eintreten.

    Das geht nicht, eventuell könntest Du aber mit "CASE THEN" was anfangen.

  2. yo,

    Bei der Auswertung der SQL-Abfrage muss also die Reihenfolge wie folgt aussehen:
    "person2"
    "person1"
    "person3a"
    "night3a"
    "night2"
    "night1"

    wenn ich das richtig verstanden habe, dann stehen die daten der personen 1,2,3 und night 1,2,3a in verschiedenen spalten sprich letztlich in einem datensatz. deine probleme könnten dabei auf ein kritisches daten-design hinweisen, da du ja daten, die eigentlich "nebeneinander" stehen nun "untereinander" ausgeben willst.

    sollte dies der fall sein, kannst du sie mit dem UNION Operator auftrennen und untereinander anordnen und dabei dann sortieren. aber zu klären ist noch, ob diese daten-design wirklich so ist, wie ich denke und ob man es dann nicht besser optimieren will.

    Ilja