Stefan Falz: brauche hilfe bei sehr komplexer 'sort' syntax

Beitrag lesen

die suchergebnisse sollen sortiert werden.
datenbank (kurzversion) mit:
Feld:Kommerziell Wert:Ja oder Nein
Feld:Preis       Wert:Zahl
Feld:Aktion      Wert:Suche, Biete oder Tausche
Feld:PLZ         Wert:Zahl

zb soll zuerst nach Aktion sortiert werden (also suche, biete oder tausche), dann nach kommerziell oder nicht, und dann noch PLZ oder Preis

Heyho,

solltest Du in jedem Feld eine "normale" Sortierung, d.h entweder ab- oder aufsteigend wollen, sieht der SQL-String ungefähr so aus

Aufsteigende Sortierung:
SQL = "SELECT * FROM tblEins ORDER BY Aktion, Kommerziell, PLZ, Preis;"

Absteigende Sortierung:
SQL = "SELECT * FROM tblEins ORDER BY Aktion DESC, Kommerziell DESC, PLZ DESC, Preis DESC;"

Soweit so gut.
Solltest Du im Feld Aktion eine beliebige Sortierung wünschen (nicht nach dem Alphabet), wäre eine extra Tabelle, in der die Begriffe definiert sind, eher geeignet.

Dafür legt man eine neue Tabelle mit fogender Struktur  an:
Index   -> Zahl (Primärschlüssel)
Text    -> Text
Sortpos -> Zahl

Jetzt kannst Du zuerst mal dem Text eine Position innerhalb der Sortierung angeben.
Diese Tabelle wird dann als Grundlage für den eigentlichen Wert der Haupttabelle benutzt.
In Deiner Haupttabelle mußt Du das Feld Aktion jetzt noch in eine Zahl eingeben.

Der SQL-String (erschlag mich nicht, wenn ich einen Dreckfuhler drinhabe) sieht dann so aus.

SELECT tblEins.*, tblZwei.* FROM tblEins INNER JOIN tblZwei ON tblEins.Aktion = tblZwei.Index ORDER BY tblZwei.Sortpos;"

SQL-Datenbanken handeln sowas normalerweise ohne Probleme.
MySQL kenne ich nicht, aber ich habe noch keine Datenbank gesehen, die sowas nicht kann.

Tschau, Stefan