Vinzenz Mai: mysql + nach mehreren Spalten sortieren

Beitrag lesen

Hallo Sebastian,

VALUES (projekt1, leitung1, projekt2, leitung2, projekt3, leitung3);

VALUES ('Cubesat', 0, '', -1, '', -1);
VALUES ('Cubesat', 0, '', -1, '', -1);
VALUES ('Computer & Homepage', 0, 'Cubesat', 1, '', -1);
VALUES ('Computer & Homepage', 2, 'Cubesat', 1, '', -1);

lese ich das richtig als Tabelle mit den Spalten

projekt1              leitung1  projekt2  leitung2  projekt3  leitung3
----------------------------------------------------------------------
Cubesat               0                   -1                  -1
Cubesat               0                   -1                  -1
Computer & Homepage   0         Cubesat    1                  -1
Computer & Homepage   2         Cubesat    1                  -1

Wenn ja, dann solltest Du dringend daran denken, diese suboptimale Tabellenstruktur zu bereinigen. Vier dieser 6 Spalten sind schlicht überflüssig, da Du dreimal das Gleiche - ja es ist das Gleiche - in unterschiedlichen Spalten speicherst. Das ist eine ganz schlechte Idee. Statt Zeichenketten mit der Projektbezeichnung solltest Du lieber eine ID einer weiteren Tabelle speichern.

Desweiteren solltest Du Dich über NULL-Werte informieren. Sowohl Deine künstlichen -1 als auch Deine Leerstrings sehen ganz danach aus, als sollte dort entsprechend ein NULL-Wert stehen.

Du solltest Dir den Artikel Einführung Joins durchlesen, da steht vieles Wissenswerte drin.

Ich möchte jetzt, dass die Datensätze in Abhängigkeit von Leitung bezogen Cubesat sortieren, also so:

VALUES ('Computer & Homepage', 2, 'Cubesat', 1, '', -1);
VALUES ('Computer & Homepage', 0, 'Cubesat', 1, '', -1);
VALUES ('Cubesat', 0, '', -1, '', -1);
VALUES ('Cubesat', 0, '', -1, '', -1);

Nein, so etwas ist in normalem SQL nicht vorgesehen. Es ist auch nicht sinnvoll, Zeit und Arbeit in den Versuch zu stecken, mit einem wilden Konstrukt dieses Ergebnis zu erzielen. Vielmehr solltest Du Deine Tabellenstruktur bereinigen, danach sollte es möglich sein, Deine Ergebnismenge (die dann vielleicht anders aussieht) zu selektieren.

Freundliche Grüße

Vinzenz