Sortierung nach eine bestimmten Spalte

Sortierung nach eine bestimmten Spalte

am 13.07.2007 12:50:02 von 100.236719

Hallo zusammen,

möchte eine Tabelle "Artikel" nach folgenden Kriterien sortieren:
- es sollen zu erst alle Artikel angezeigt werden die einen Preis größer
Null "0" und ungleich "null" sind, dh. in der Spalte "Preis" ist ein
intiger Wert größer Null "0" und ungleich "null" ist.
- alle Artikel, deren Wert in der Spalte "Preis" eine Null "0" oder
"null" ist sollen danach angezeigt werden.

Die Tabelle " Artikel " sieht folgender Massen aus:

id, name, preis, status
----------------------------------------------

1 Name1 12 1
2 -- 2 1
3 ... 0 1
4 Text1 null 1
5 Text2 5 1
6 Text3 11 1
7 Name2 0 1
8 Name3 null 1
9 Art1 3 1
10 Art4 43 2

Dazu habe ich folgenden Versuch gemacht:

SELECT Artikel.id, Artikel.preis FROM Artikel WHERE Artikel.status = 1
IN
(SELECT Artikel.id FROM Artikel WHERE Artikel.preis IS not null order
by Artikel.preis asc ) order by Artikel.preis desc

In dieser Query warden alle Preise von dem größtem bis zum kleinstem
dann 0 und danach null, was falsch ist :-(

Die Query kann ich in eine andere Form umgestalten, die mir leider auch
nicht weiter hilft :-(

SELECT Artikel.id, Artikel.preis FROM Artikel WHERE Artikel.status = 1
And Artikel.preis IS not null order by Artikel.preis desc

Hat jemand eine Idee wie man das lösen kann?

Grüße Bernhard

Re: Sortierung nach eine bestimmten Spalte

am 13.07.2007 13:26:48 von Michael Ziegler

bernhard.s wrote:
> möchte eine Tabelle "Artikel" nach folgenden Kriterien sortieren:
> - es sollen zu erst alle Artikel angezeigt werden die einen Preis größer
> Null "0" und ungleich "null" sind, dh. in der Spalte "Preis" ist ein
> intiger Wert größer Null "0" und ungleich "null" ist.
> - alle Artikel, deren Wert in der Spalte "Preis" eine Null "0" oder
> "null" ist sollen danach angezeigt werden.

dazu fällt mir im Moment nur folgendes ein:

| SELECT * FROM `artikel`
| WHERE preis IS NOT NULL AND preis > 0
| UNION
| SELECT * FROM `artikel`
| WHERE preis IS NULL OR preis = 0



--
Testscript für RegEchsen:
http://diesundas.funzt-halt.net/regextest.php

Re: Sortierung nach eine bestimmten Spalte

am 13.07.2007 13:45:15 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: Sortierung nach eine bestimmten Spalte

am 13.07.2007 13:59:55 von 100.236719

Hallo Andreas,

> test=*# select id, preis from preise order by case when preis is not null and preis > 0 then 0 else 1 end, preis;

danke, das habe ich gesucht :-)

Grüße Bernhard