Sortierung nach eine bestimmten Spalte

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
100.236719 [ Fr, 13 Juli 2007 12:50 ] [ ID #1767611 ]

Re: Sortierung nach eine bestimmten Spalte

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
Michael Ziegler [ Fr, 13 Juli 2007 13:26 ] [ ID #1767613 ]

Re: Sortierung nach eine bestimmten Spalte

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
Andreas Kretschmer [ Fr, 13 Juli 2007 13:45 ] [ ID #1767615 ]

Re: Sortierung nach eine bestimmten Spalte

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
100.236719 [ Fr, 13 Juli 2007 13:59 ] [ ID #1767616 ]
Datenbanken » de.comp.datenbanken.mysql » Sortierung nach eine bestimmten Spalte

Vorheriges Thema: Nur ganz bestimmte Zeilen selektieren
Nächstes Thema: Wie viele Datenbanken kann MySQL verwalten?