bert: Sortierung

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 angezeigt, was auch 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 ein Idee wie man das lösen kann?

Grüße bert

  1. Dazu habe ich folgenden Versuch gemacht:   -- grausam

    SELECT Artikel.id, Artikel.preis FROM Artikel WHERE Artikel.status = 1
    IN          -- Wo ist das AND ?
    (SELECT Artikel.id FROM Artikel WHERE  Artikel.preis IS not null order by Artikel.preis asc ) order by Artikel.preis desc

      
    
    > Hat jemand ein Idee wie man das lösen kann?  
      
    Ja, entwickle erst einmal ein SQL-Statement, das Dir die Daten holt und passe es dann an i.p. Sortierung ("ORDER BY x DESC" böte sich da an.)
    
    1. Hallo,

      Ja, entwickle erst einmal ein SQL-Statement, das Dir die Daten holt und passe es dann an i.p. Sortierung ("ORDER BY x DESC" böte sich da an.)

      Lösung im Netz bekommen:

        
      slect id, preis from preise order by case when preis is not null and preis > 0 then 0 else 1 end, preis;  
      
      

      grüße bert