Ergebnis 1 bis 6 von 6

Thema: Sortieren mit Nullwerten an erster Stelle - Order by

  1. #1
    Contao-Nutzer
    Registriert seit
    14.01.2010.
    Beiträge
    48

    Standard Sortieren mit Nullwerten an erster Stelle - Order by

    Hallo Zusammen,

    ich hab da mal wieder ne Frage bei der ich mit suchen nicht weiterkomme. Ich weiß es handelt sich dabei auch um ein generelles MySQL sortier Phänomen aber vll. hat ja jemand von euch eine Idee.

    Ich habe einen Katalog der Start- und Enddatums (was ist die Mehrzahl von Datum? )

    Code:
    +------------+------------+
    | start      | end        |
    +------------+------------+
    | 1989-05-13 | 2003-05-12 |
    | 1989-08-31 | 2008-01-21 |
    | 1990-08-27 | NULL       |
    +------------+------------+
    Nun soll die Ausgabe als erstes nach dem jüngsten End-Datum sortiert werde und dann nach dem Start-Datum. Das einzige Problem ist die NULL die wird nämlich trotz DESC am Ende aufgelistet... Probiert hatte ich es folgender Maßen:
    PHP-Code:
    end DESCstart DESC 
    Jemand mit Idee?

    Gruß Valentin

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.520
    User beschenken
    Wunschliste

    Standard

    Äh, wenn du aufsteigend sortieren willst, dann muss es doch ASC heißen?
    Hat bei mir funktioniert, die Zeile mit end is NULL war am Anfang.

    Welchen Feldtyp haben start und end?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer
    Registriert seit
    14.01.2010.
    Beiträge
    48

    Standard

    Nur das dann nach der NULL nicht das jüngste sonder älteste Datum kommt...

    Ich möchte quasi die NULL und dann den höchsten Wert! Ungefähr so:
    Code:
    +------------+------------+
    | start      | end        |
    +------------+------------+
    | 1990-08-27 | NULL       |
    | 1989-08-31 | 2008-01-21 |
    | 1989-05-13 | 2003-05-12 |
    +------------+------------+
    ASC war mir bekannt... ich habe im Netzt die Möglichkeit gefunden das man sich ne Extra Spalte definiert z.B. is_null und dort für null 1 einträgt und allen anderen Werten 0 dann lässt mann erst danach sortieren ...
    PHP-Code:
    is_null DESCend DESCstart DESC 
    Mit der Extension Katalog finde ich das allerdings etwas kompliziert... kennt ihr noch eine andere Möglichkeit?

    Gruß V.

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.520
    User beschenken
    Wunschliste

    Standard

    also rein in mysql würde mir dann noch einfallen:
    Code:
    SELECT * FROM tabelle where end is NULL order by start desc
    UNION
    SELECT * FROM tabelle where end is not NULL order by end desc, start desc
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer
    Registriert seit
    14.01.2010.
    Beiträge
    48

    Standard

    Hmmm... habs ihm mal versucht unterzuschieben:

    Condition
    Code:
    end=''
    Order by
    Code:
    start desc 
    UNION
    FROM cat_test WHERE pid='3' AND end!=''' order by end desc, start desc
    da hat er aber kein bock drauf, hätte mich auch gewundert...

    PHP-Code:
    Fatal errorUncaught exception Exception  with message Query errorIncorrect usage of UNION and ORDER BY[...] 
    Den Versuch war's wert...

    Gruß V.

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.520
    User beschenken
    Wunschliste

    Standard

    aja, da hat MySQL sogar recht.
    Das müsste man klammern, dann stimmt aber die Sortierung in Summe nicht mehr.
    Folgendes Statement sollte gehen, könnte aber wegen der Hochkommatas Probleme machen beim Einbau.

    Code:
    SELECT * FROM tabelle order by ifnull(end,'2323-11-11') desc, start desc
    Das künstliche Datum muss natürlich weit genug in der Zulunft liegen.

    Auch diese Möglichkeit geht, hier bekommste aber ne künstliche Spalte mehr zurück:
    Code:
    SELECT *, end IS NULL AS isnull FROM tabelle order by isnull desc,end desc,start desc
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. An bestimmte stelle im Artikel springen
    Von Cristal im Forum Allgemeine Inhaltselemente
    Antworten: 1
    Letzter Beitrag: 08.03.2011, 22:58
  2. Accordion: Element von 'externer' Stelle aus toggeln?
    Von misc im Forum Layout / Templates / Holy Grail
    Antworten: 3
    Letzter Beitrag: 23.01.2011, 19:48
  3. Artikel Headline an andere Stelle im Template
    Von innographix im Forum Layout / Templates / Holy Grail
    Antworten: 1
    Letzter Beitrag: 03.11.2010, 15:12
  4. Stylesheet-Link out of order? (nach Update auf 2.9)
    Von Projecta im Forum Installation / Update
    Antworten: 3
    Letzter Beitrag: 11.07.2010, 08:51

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •