Spezielle Order-Reihenfolge
Spezielle Order-Reihenfolge
am 07.01.2006 10:16:02 von Peter Stoss
Hallo,
ich muss eine Tabelle abfragen und speziell sortieren.
In der Tabelle sind drin:
ABBB
ACCC
W111
W222
Ich brauche aber die Ws zuerst, es soll rauskommen
W111
W222
ABBB
ACCC
Geht das ohne den Output erst nochmal in PHP irgendwie sortieren zu
müssen?
Danke! Peter.
Re: Spezielle Order-Reihenfolge
am 07.01.2006 11:06:08 von Johannes Vogel
Hi Peter
Peter Stoss wrote:
> ich muss eine Tabelle abfragen und speziell sortieren.
> In der Tabelle sind drin:
> ABBB
> ACCC
> W111
> W222
> Ich brauche aber die Ws zuerst, es soll rauskommen
> W111
> W222
> ABBB
> ACCC
> Geht das ohne den Output erst nochmal in PHP irgendwie sortieren zu
> müssen?
Weshalb die W's? Willst du die erste Spalte einfach in umgekehrter
Reihenfolge oder willst du explizit die W's an den Anfang stellen?
Ersteres könntest du bspw. durch
.... order by left(field,1) desc, field asc ...
erreichen.
Zweites könntest du durch
.... order by replace(left(field,1), 'W','_'), field asc ...
erreichen.
HTH; Johannes
Re: Spezielle Order-Reihenfolge
am 07.01.2006 11:08:05 von Andreas Kretschmer
Andreas
--
Diese Message wurde erstellt mit freundlicher Unterstützung eines freilau-
fenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert frei
von Micro$oft'schen Viren. (#97922 http://counter.li.org) GPG 7F4584DA
Was, Sie wissen nicht, wo Kaufbach ist? Hier: N 51.05082°, E 13.56889° ;-)
Re: Spezielle Order-Reihenfolge
am 07.01.2006 11:13:00 von dnoeth
Peter Stoss wrote:
> ich muss eine Tabelle abfragen und speziell sortieren.
>
> In der Tabelle sind drin:
> ABBB
> ACCC
> W111
> W222
>
> Ich brauche aber die Ws zuerst, es soll rauskommen
> W111
> W222
> ABBB
> ACCC
Nimm Standard SQL:
ORDER BY
CASE WHEN col LIKE 'W' THEN 0 ELSE 1 END,
col
Dieter
Re: Spezielle Order-Reihenfolge
am 07.01.2006 11:23:49 von Andreas Kretschmer
Andreas
--
Diese Message wurde erstellt mit freundlicher Unterstützung eines freilau-
fenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert frei
von Micro$oft'schen Viren. (#97922 http://counter.li.org) GPG 7F4584DA
Was, Sie wissen nicht, wo Kaufbach ist? Hier: N 51.05082°, E 13.56889° ;-)
Re: Spezielle Order-Reihenfolge
am 07.01.2006 11:32:26 von dnoeth
Andreas Kretschmer wrote:
>>Nimm Standard SQL:
>>ORDER BY
>> CASE WHEN col LIKE 'W' THEN 0 ELSE 1 END,
>> col
>
>
> Schön.
Funktioniert aber nicht ;-)
> Besser vielleicht aber
>
> select * from foo ORDER BY CASE WHEN x ~ '^W' THEN 0 ELSE 1 END, x;
>
> um auf den Anfang der Spalte zu testen.
Ist aber kein Standard SQL, fehlte nur ein %:
LIKE 'W%'
Dieter
Re: Spezielle Order-Reihenfolge
am 07.01.2006 11:42:32 von Andreas Kretschmer
Andreas
--
Diese Message wurde erstellt mit freundlicher Unterstützung eines freilau-
fenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert frei
von Micro$oft'schen Viren. (#97922 http://counter.li.org) GPG 7F4584DA
Was, Sie wissen nicht, wo Kaufbach ist? Hier: N 51.05082°, E 13.56889° ;-)
Re: Spezielle Order-Reihenfolge
am 09.01.2006 09:56:31 von Dominik Echterbruch
Andreas Kretschmer wrote:
> begin Dieter Noeth wrote:
>
>>>select * from foo ORDER BY CASE WHEN x ~ '^W' THEN 0 ELSE 1 END, x;
>>>
>>>um auf den Anfang der Spalte zu testen.
>
>
>>Ist aber kein Standard SQL, fehlte nur ein %:
>
>
>>LIKE 'W%'
>
>
> Stymmt latürnich, ich verwende halt ganz gern den ~ - Operator von PG,
Und schmeißt damit für jede Zeile die (vergleichsweise) nicht gerade
performante RegExp Engine an. Dann doch lieber ein LIKE und ein kleiner
Index :)
Grüße,
Dominik
--
MonstersGame - Die Schlacht zwischen Vampiren und Werwölfen
http://spielwelt6.monstersgame.net/?ac=vid&vid=3018786