[SQL] 2 Spalten sortieren

UnBreakable

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
456
Hallo,

ich habe eine Frage:

Ist es möglich (wenn ja, wie ;)) in SQL über 2 Spalten zu sortieren?

Hier zur veranschaulichung:


Spalte 1 Spalte 2
---------- ----------
1
8
                4
                5

Das ist ja kein Problem.
Aber das soll so sortiert werden:

Spalte 1 Spalte 2
---------- ----------
1
                4
                5
8



ist das möglich?
 
Zuletzt bearbeitet:
SELECT Spalte1,Spalte2 FROM tabelle ORDER BY Spalte1, Spalte2

Dabei wird zuerst nach Spalte1, dann bei gleichen Werte nach Spalte2 sortiert (jeweils aufsteigend, für absteigend nach dem ORDER BY <Spaltenname> DESC).

MySQL Documentation ftw
 
Wenn ich dies so schreibe wie du gesagt hast bekomm ich das Ergebnis wie ich im 1. Beispiel veranschaulicht habe.

Ich will aber das ergebnis so wie im 2. haben!
Das ist denke ich mal nicht ganz so einfach...
 
Die einzige Möglichkeit wäre wahrscheinlich, nach der SQL-Abfrage manuell zu sortieren.
 
so könnte es über einen umweg funktionieren:


SELECT Spalte1,Spalte2, Spalte1+Spalte2 as "Summe" FROM tabelle ORDER BY Summe;

ich hoffe, dass der sinn verstanden ist. ob der select 1:1 so funzt weiß ich nicht. dafür habe ich zuwenig mit sql am hut ;)
 
Code:
SELECT s1, s2 FROM
(
  SELECT s1, s2, NVL(s1, s2) AS s3
  FROM table;
)
ORDER BY s3;

Das sollte gehen. NVL je nach Beschaffenheit deiner Daten durch was geeigneteres ersetzen, z.B. DECODE. Ist vielleicht nur nicht wahnsinnig performant, da auf der Ergebnismenge ein zweiter Tablescan erfolgt.

Edith:
Das war wohl zeitgleich mit Sisko ^^ Sofern dich in der Ergebnismenge die temporäre Spalte nicht stört, kannst du dir das Subselect natürlich schenken.

Edith2:
@Sisko: Die Lösung mit der Summe könnte Ärger machen, wenn es sich bei den fehlenden Werten um NULL-Values handelt (NULL + irgendwas ist immer NULL).

Die Preisfrage wäre natürlich noch, was passiert wenn in beiden Spalten etwas drinsteht. Aber das sieht irgendwie eher nach einem Outer Join aus.
 
Zuletzt bearbeitet:
UnBreakable schrieb:
Wenn ich dies so schreibe wie du gesagt hast bekomm ich das Ergebnis wie ich im 1. Beispiel veranschaulicht habe.

Ich will aber das ergebnis so wie im 2. haben!
Das ist denke ich mal nicht ganz so einfach...

Jau mein Gutster, dann beschwer Dich mal nicht über eine Lösung, die zu Deinem Urpost funktioniert hätte, aber nicht zu Deinem geänderten (wo Du die Änderung zu dem Zeitpunkt gespeichert hast, an dem ich auch gepostet habe!)...


Nacers Ansatz sieht aber sehr vielversprechend aus.
 
XunnD schrieb:
Jau mein Gutster, dann beschwer Dich mal nicht über eine Lösung, die zu Deinem Urpost funktioniert hätte, aber nicht zu Deinem geänderten (wo Du die Änderung zu dem Zeitpunkt gespeichert hast, an dem ich auch gepostet habe!)...


Nacers Ansatz sieht aber sehr vielversprechend aus.

Tja, ich habe nichts an meinem Urpost verändert, nur es etwas übersichtlicher gestaltet um solche Missverständnisse zu vermeiden.

Außerdem hab ich mich nicht beschwert, sondern wollte das nur klar stellen. Ich bin froh wenn mir wer hilft, da beschwer ich mich nicht wenn man nicht sofort mein Problem erkennt bzw. es kann auch sein das ich mich einfach missverständlich oder falsch Ausdrücke.
Aber egal, jetzt ist das Problem ja verstanden.

Ich habe momentan leider keine das so zu testen, aber ich denke so sollte ich das hinbekommen...

Ich meld mich wieder wenn ich es getestet habe.
 
Zurück
Oben