Guten Abend,
ich sitze gerade vor einem Problem.
Ich habe eine Tabelle, die ich ausgeben möchte.
Wie man es macht ist mir klar
"SELECT * FROM gallery ORDER by cat ASC, id DESC, datum DESC"Mein Problem ist nun aber das in der Spalte cat, drei verschiedene Möglichkeiten gibt, i, v und j, diese müssen leider zur Indifikation so bleiben.
Bei ASC werden sie nach i,j,v sortiert.
Bei DSEC werden sie nach v,j,i sortiert.Ich benötige nun aber eine Ausgabe mit i,v,j. Wie kann ich so etwas hinbekommen?
1. Rat
DB vernünftig normalisieren, dann läufst Du nicht in solche Fallen.
Falls Du Dich partout nicht von dem DB-Modell verabschieden magst (weil es vielleicht nicht von Dir ist und Du Dir die Kompatibilität zu evtl. Updates erhalten willst...)
2. einzelne Selects in eine temoräre Tabelle, Select auf die Temptabelle, das ganze in eine Prozedur packen. Mit einem richtigen DBMS wie MS SQL geht das auch mit ein paar Hunderttausend Saetzen noch vertretbar schnell. Bei mySQL und Co: Keine Ahnung, gibt's da mittlerweile temp-Tabellen?...;)
3. einzelne Selects mit Union-Operator zusammenfassen, also etwas in der Art:
SELECT * From Tab WHERE spalte = i ORDER by Spalteirgendwas
UNION SELECT * From Tab WHERE spalte = v ORDER by Spalteirgendwas
... etc.
Die Verwendung von Union dürfte performancetechnisch die uneleganteste sein. Solange es nur um ein paar (Tausend) Saetze geht, ist es aber sicher die unafwendigste.
cul,
Falk