Antworten
Für diese spezielle Sortierung gibt es die Funktion FIELD() - sie vergleicht den Wert des ersten Arguments mit den folgenden Argumenten und gibt als Rückkehrwert die Position des Arguments zurück, welches mit ersten Argument übereinstimmt. Klingt kompliziert, ist es aber nicht. Beispiel:
Code: In Zwischenablage kopieren (nur IE)
Für Dein spezielles Problem bedeutet das, Du gibst FIELD als erstem Parameter die Spalte "Position" mit und als anschließende Parameter die gewünschte Sortierreihenfolge - und läßt danach sortieren:
Code: In Zwischenablage kopieren (nur IE)
2.
Vielen Dank für deine Antwort, hat prima geklappt :-)
Da kommt auch gleich mein nächstes Problem. Ich möchte in die Abfrage einbauen, dass er ab dem 6. Suchergebnis nicht mehr nach den Positionen ordnen soll, sondern nach der Einsatzzeit (`min`) und zwar absteigend. Wie kann man das in die SQL-Abfrage einbauen??
3.
Das ist ohne weitere Kenntnis der Datenstruktur nicht zu beantworten. Der Einfachheit halber würde ich dann zwei getrennte SELECTs vorschlagen, nämlich die ersten sechs wie oben und die "restlichen" nach 'min' sortiert.
Es beschleicht mich bei solchen sehr eigenartigen Problemen immer das Gefühl, dass das Design "kaputt" ist.
4.
Bei meinem Projekt gehts um Basketball. Es werden Statistiken aus der Datenbank gelesen, so wie hier:
http://www.nba.com/games/20050601/SASPHO/boxscore.html Dort wird zuerst nach den Startern sortiert, dann nach den Positionen (G,F,C) und bei den Bankspielern nach den Minuten. Wenn das alles in einer Abfrage sein würde, wäre das prima...
5.
D.h. also sind das keine "Abfragen" in dem Sinne (es gibt keine WHERE-Klausel), sondern es ist immer eine tabellarische Auflistung, weiterhin ist die Beschreibung "ab dem 6. Suchergebnis" semantisch FALSCH, denn was Du eigentlich meinst, ist: WENN die Spalte Position keinen Wert enthält, soll nach 'min' sortiert werden (und zwar ABSTEIGEND!), ansonsten nach dem Wert der Spalte 'Position' gemäß der o.g. Definition.
Abstraktion ist nicht jedermans Sache und dabei leider das allerwichtigste bei einer Problemlösung. Im vorliegenden Fall ist Deine Beschreibung unbrauchbar gewesen, weil MySQL keine "Nummerierung" kennt.
Wenn die Spalte 'Position' mit NOT NULL definiert ist, als einen Leersting als zulässigen Wert kennt, ist es am einfachsten so:
Code: In Zwischenablage kopieren (nur IE)
6.
In der Spalte Position steht trotzdem bei jedem Spieler ein Wert. Das heißt es gibt keine leeren Felder. Bei der obigen Seite wird nur die Position bei den Bankspielern nicht mehr angezeigt.
7.
Zitat:
Chrischan postete
In der Spalte Position steht trotzdem bei jedem Spieler ein Wert. Das heißt es gibt keine leeren Felder. Bei der obigen Seite wird nur die Position bei den Bankspielern nicht mehr angezeigt.
Wunderbar! Ich hatte schon gefürchtet, das wäre die endgültige Lösung gewesen - Null Lehrwert! Sooo ist das aber viel besser: mit den Hilfsmitteln und Hinweisen wirst Du nun in der Lage sein (müssen!), die Lösung selbst zu finden. Nur vorgekaut ist einfach zu wenig.
Viel Spass beim Finden einer Lösung - das befriedigt definitiv mehr als immer nur zu fragen ohne zur verstehen.