muenzchen: (MySQL) NULL ordnen?

Hallo!

Ich habe folgendes Problem.

Ich bekomme durch ein LEFT JOIN manchmal als Zelleninhalt 'NULL' manchmal '1'. Auf jeden Fall bekomme ich ein Datum.
Nun ordne ich absteigend nach dem Datum und möchte aber zusätzlich, dass alle Datensätze mit einer '1' auch nach dem Datum geordnet zu oberst stehen, der Rest mit einer 'NULL' sollte darunter nach dem Datum geordnet sein.
Ist sowas möglich?

MfG, muenzchen

  1. Hi muenzchen,

    Nun ordne ich absteigend nach dem Datum und möchte aber zusätzlich, dass alle Datensätze mit einer '1' auch nach dem Datum geordnet zu oberst stehen, der Rest mit einer 'NULL' sollte darunter nach dem Datum geordnet sein.
    Ist sowas möglich?

    brauchst Du die NULL-Werte als Ergebnis? Welches RDBMS? Hat das eine Funktion zur automatischen Konvertierung von Werten in andere (dann sortierbare) Werte (ich habe "NVL" vage im Hinterkopf ...).

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
    1. Hi muenzchen,

      Nun ordne ich absteigend nach dem Datum und möchte aber zusätzlich, dass alle Datensätze mit einer '1' auch nach dem Datum geordnet zu oberst stehen, der Rest mit einer 'NULL' sollte darunter nach dem Datum geordnet sein.
      Ist sowas möglich?

      brauchst Du die NULL-Werte als Ergebnis? Welches RDBMS? Hat das eine Funktion zur automatischen Konvertierung von Werten in andere (dann sortierbare) Werte (ich habe "NVL" vage im Hinterkopf ...).

      Viele Grüße
            Michael

      Was ist RDBMS?

      Die Felder, die auch NULL Werte enthalten können, brauche ich nicht für das Ergebnis, sondern nur zum ordnen.
      Da beim LEFT JOIN es eben auch sein kann, dass mal ein Feld nicht gejoint werden kann, entstehen dadurch Felder mit NULL Werten, das kann man leider nicht umgehen.

      1. Hi muenzchen,

        Was ist RDBMS?

        "relational data base management system" - also das, was oft fälschlicherweise "Datenbank" genannt wird.

        "sql nvl" ist tatsächlich eine verheißungsvolle Google-Query in Deinem Fall, auch wenn die Lösung Deines Problems letztlich herstellerspezifisch ausfallen wird.

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
        1. Hi muenzchen,

          Was ist RDBMS?

          "relational data base management system" - also das, was oft fälschlicherweise "Datenbank" genannt wird.

          "sql nvl" ist tatsächlich eine verheißungsvolle Google-Query in Deinem Fall, auch wenn die Lösung Deines Problems letztlich herstellerspezifisch ausfallen wird.

          Viele Grüße
                Michael

          Also von der Funkiton her könnte das NVL() das sein, was ich brauche.
          Allerdings gibt es diesen Befehl in MySQL nicht.

          1. Hi muenzchen,

            Allerdings gibt es diesen Befehl in MySQL nicht.

            syntaktisch oder semantisch? (Das war es, was ich mit "herstellerspezifisch" meinte.)

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
            1. Hi muenzchen,

              Allerdings gibt es diesen Befehl in MySQL nicht.

              syntaktisch oder semantisch? (Das war es, was ich mit "herstellerspezifisch" meinte.)

              Viele Grüße
                    Michael

              Tja, wenn du mir die beiden Begriffe erklärst, kann ich dir vielleicht eine Antwort geben :)

              Aber ich habs mittlerweile gelöst. Wenn ich zuerst absteigend nach dem Feld mit NULL oder 1 als Inhalt ordne, ordnet MySQL automatisch die NULLen nach unten.

              Ich denke mal das dürfte eine recht offizielle Lösung sein.
              Steht auch so in der Doku beschrieben.

              1. Hi muenzchen,

                Aber ich habs mittlerweile gelöst. Wenn ich zuerst absteigend nach dem Feld mit NULL oder 1 als Inhalt ordne, ordnet MySQL automatisch die NULLen nach unten.
                Ich denke mal das dürfte eine recht offizielle Lösung sein.
                Steht auch so in der Doku beschrieben.

                der zweite (!) Treffer der von mir genannten Query enthält bereits in der Google-Preview explizit den Text: "in MySQL the name is IFNULL(), whereas in Oracle it is NVL()."

                Und nein, "nvl" ist kein Befehl, sondern eine Funktion. Also hättest Du im mySQL-Kapitel über Funktionen nachlesen sollen.

                Viele Grüße
                      Michael

                --
                T'Pol: I apologize if I acted inappropriately.
                V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
                (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
                Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
  2. Hallo Muenzchen!

    select a, b from tabelle order by a, b;

    In diesem Beispiel soll a das Feld sein, das auch NULL enthält, b ist das DATETIME-Feld. Ich glaube, dass MySQL defaultmäßig zuerst die '1' und danach die NULL sortiert - falls nicht, einfach

    ... order by a desc, b;

    mfg

    norbert =:-)