Moin!
Deine Probleme beim Sortieren werden damit zusammenhängen, daß Deine MySQL-Datenbank nicht den deutschen ISO-Zeichensatz verwendet, sondern vermutlich den englischen.
Die Verwendung eines Zeichensatzes hat nichts mit der Verwendung einer Sortierreihenfolge zu tun.
MySQL sortiert standardmäßig anhand des Bytewertes des Zeichens. Logischerweise muß ein Umlaut einen anderen Bytewert haben, als der Grundvokal, ansonsten wären die beiden Zeichen für die Textdarstellung nicht unterscheidbar. Bei der Sortierung hingegen sind Umlaut und Grundvokal als identisch anzusehen - zumindest in deutscher Sortierung. Die Franzosen beispielsweise, deren Zeichen sich ebenfalls in z.B. ISO-8859-1 befinden, sortieren wahrscheinlich ihr Alphabet ganz anders. Die Zeichensatzangabe ist daher kein ausschließliches Kriterium.
Hinweise findest Du u.a. hier: http://dev.mysql.com/doc/mysql/en/german-character-set.html.
Auf dieser Seite wird, allerdings eher am Rande, auch drauf eingegangen. Das sprachrichtige Sortieren läuft unter dem Begriff "Collation" - und es ist ab MySQL 4.1 verfügbar. Die für 4.0 notwendige Angabe "latin1_de" enthält die Sprachangabe DE, welche für das Sortieren zuständig ist, aber auch, es ist also keine reine Zeichensatzangabe.
Besser noch als der deutsche ISO-Zeichensatz ist meines Erachtens die Verwendung von UTF-8 (http://dev.mysql.com/doc/mysql/en/charset-unicode.html).
UTF-8 ist grundsätzlich eine gute Sache, weil man auf diese Weise sämtliche definierten Zeichen speichern und verarbeiten kann, aber dieser Unicode hilft einem nicht beim Sortieren. Im Gegenteil wird die ganze Sache noch komplizierter, da man sich ja auf den gesamten Zeichenraum stützen muß. Mit der Angabe der gewünschten "Collation" sollte das aber kein großes Problem sein. UTF-8 gibts aber ja auch erst ab Version 4.1 - dürfte mit ein Grund sein, warum im Vergleich zu 4.0 Zeichensatz und Sortierordnung getrennt wurden.
- Sven Rautenberg