Sortieren (MySQL)
Andre
- datenbank
Hallo an Alle,
ich habe eine Frage zu einer speziellen Sortierung der Ausgabe einer SQL Tabelle:
Ich habe veschiedene Grössen wie 32, 34,36 aber auch S, M, L, XXL u.s.w.
Wenn die Grösse S, M, L, XL ist würde ich die gerne auch in dieser Reihenfolge ausgeben. ( Nicht L M S XL )
Sind die Grössen INTs, dann würde ich sie aber weiterhing gerne nach der Nummer sortieren.
Kann ich die Reihenfolge bei Buchstaben festlegen wenn Sie vorhanden sind und bei nicht vorhanden sein einfach nach Nummer sortieren?
Viele Grüsse,
Andre
Hi,
ich nehme an, das ist ein und dasselbe Feld, nach dem sortiert werden soll?
Dann bietet sich doch ein SET oder eine ENUM an.
Der Yeti
Hi,
ich nehme an, das ist ein und dasselbe Feld, nach dem sortiert werden soll?
Dann bietet sich doch ein SET oder eine ENUM an.
Der Yeti
mal schauen, was ich da finde!
danke für den tipp!
viele grüsse,
andre
Hallo andre!
ich nehme an, das ist ein und dasselbe Feld, nach dem sortiert werden soll?
Dann bietet sich doch ein SET oder eine ENUM an.
Der Yetimal schauen, was ich da finde!
danke für den tipp!
Du findest "ENUM" und "SET" in dem MySQL-Manual:
- 7.2.3.3 Der ENUM-Typ: http://dev.mysql.com/doc/mysql/de/ENUM.html
- 7.2.3.4 Der SET-Typ: http://dev.mysql.com/doc/mysql/de/SET.html
Hallo nochmal,
leider habe ich nichts gefunden.
Die Datensätze stammen nicht aus einem Feld.
Es sind verschiedene Datensätze, ich möchte sie nur in einer Bestimmten Reihenfolge ausgeben.
Also nicht z.B.
L M S XL
sondern
S M L XL
Gibt es da eine Möglichkeit?
Beste Grüsse!
Hi,
Also nicht z.B.
L M S XL
sondern
S M L XLGibt es da eine Möglichkeit?
In PHP z.B. kannst du eine eigene Sortierfunktion schreiben und damit deine eigene Reihenfolge definieren. Für reines SQL ist das dann aber schon eine Spur zu aufwändig.
http://php.net/usort
Der Yeti
Hhmm,
das macht alles extrem kompliziert.
Ich gebe die Datensätze mit fetcharray in einer while Schleife aus.
Das sollte auch so bleiben.
Ich würde die Datensätze gerne schon im SELECT richtig sorteieren.
Gibts da keine Möglichkeit?
Vielen Dank,
Andre
p.s.
Wenn es keine Lösung gibt, muss ich halt noch ein Feld anlegen, indem automatisch eine Sortiernummer angelegt wird.
(bei S 1, bei M 2, bei L 3 u.s.w.)
Das ist aber nur ein Workaround. Geht es nicht eleganter?
Hi,
vielleicht hilft dir folgender User Comment auf http://dev.mysql.com/doc/mysql/de/Sorting_rows.html weiter:
"If you want to explicitly specify the order of which 'order by' comes back in, like if you had a priority field that had the values "Low" "High" or "Medium" .. do this:
select * from tablename order by priority='High' DESC, priority='Medium' DESC, priority='Low" DESC;"
Also sollte ORDER BY size='32',size='34',size='36',...,size='S',size='M',...,size='XXXL' funktionieren.
Der Yeti
U are my hero Yeti ;-)
Werde das mal testen!
Vielen Dank!!
Es funktioniert ;-)
Vielen Dank, das ist eine gute Lösung!
Ach wären doch alle Menschen so hilfsbereit..
(Ich versuche auch was ich kann, allerdings nicht hier in diesem Bereich.
Ich helfe dort, wo ich mich auskenne)
Beste Grüsse!!
Hi Andre,
es war fast zu einfach. Ich hatte gedacht, du hättest in der MySQL-Dokumentation unter "ORDER BY" schon nachgeguckt. Ich les mir dann immer auch noch die User Comments durch, ist meistens ziemlich hilfreich.
Freut mich, dass ich dir helfen konnte. Und hab dabei selber auch noch etwas dazugelernt. :-)
Gruß vom Yeti (und es gibt ihn doch!)