Heizer: Mehrere Sortierkriterien

Hi Forum

Ich habe eine Datenbank mit Links, die ich nach zwei Kriterien sortieren will:
1. Neue Links (gekennzeichnet durch ein Feld NEW=1)
2. Alphabetisch

Soll heißen, ganz oben kommen die neuen in Alphabetischer Reihenfolge, und dann die restlichen, auch in alphabetischer Reihenfolge. Ich habe versucht, daß in die MySQL query zu schreiben, in der Art "ORDER BY new,name" aber das führt nicht zu meinem gewünschten Ergebnis. Im Moment weiche ich aus, in dem ich zuerst eine query mit "WHERE new=1 ORDER BY name" und dann eine mit "WHERE new=0 ORDER BY name" schicke. Ich halte das aber nicht für sehr performant, deshalb wäre ich für eine Möglichkeit, dies mit einem query zu erreichen sehr dankbar.

Heizer

  1. Hi Heinzer

    Ich habe eine Datenbank mit Links, die ich nach zwei Kriterien sortieren will:

    1. Neue Links (gekennzeichnet durch ein Feld NEW=1)
    2. Alphabetisch

    Soll heißen, ganz oben kommen die neuen in Alphabetischer Reihenfolge, und dann die restlichen, auch in alphabetischer Reihenfolge. Ich habe versucht, daß in die MySQL query zu schreiben, in der Art "ORDER BY new,name" aber das führt nicht zu meinem gewünschten Ergebnis. Im Moment weiche ich aus, in dem ich zuerst eine query mit "WHERE new=1 ORDER BY name" und dann eine mit "WHERE new=0 ORDER BY name" schicke. Ich halte das aber nicht für sehr performant, deshalb wäre ich für eine Möglichkeit, dies mit einem query zu erreichen sehr dankbar.

    wenn ich richtig verstanden habe, ist das Problem, das 0 vor 1 kommt
    und deswegen genau andersrum als du gerne möchtest, du kannst sagen
    ob du aufsteigen sortieren willst mit ASC und DESC. Default ist afk
    ASC. In deinem Fall müsste als ein:

    ORDER by new DESC, name

    helfen.

    Gruss Daniela

    1. Hi Heinzer

      Ich habe eine Datenbank mit Links, die ich nach zwei Kriterien sortieren will:

      1. Neue Links (gekennzeichnet durch ein Feld NEW=1)
      2. Alphabetisch

      Soll heißen, ganz oben kommen die neuen in Alphabetischer Reihenfolge, und dann die restlichen, auch in alphabetischer Reihenfolge. Ich habe versucht, daß in die MySQL query zu schreiben, in der Art "ORDER BY new,name" aber das führt nicht zu meinem gewünschten Ergebnis. Im Moment weiche ich aus, in dem ich zuerst eine query mit "WHERE new=1 ORDER BY name" und dann eine mit "WHERE new=0 ORDER BY name" schicke. Ich halte das aber nicht für sehr performant, deshalb wäre ich für eine Möglichkeit, dies mit einem query zu erreichen sehr dankbar.

      wenn ich richtig verstanden habe, ist das Problem, das 0 vor 1 kommt
      und deswegen genau andersrum als du gerne möchtest, du kannst sagen
      ob du aufsteigen sortieren willst mit ASC und DESC. Default ist afk
      ASC. In deinem Fall müsste als ein:

      ORDER by new DESC, name

      helfen.

      Super Danke, funktioniert.
      Übrigens muß es dann in PHP ORDER BY 'new' DESC, 'name' heißen, aber ich hab noch nicht so recht verstanden, wann man die einfachen Anführungszeichen verwenden muß, und wann nicht (und wann die Apostrophzeichen für Tabellen wie in phpMyAdmin)

      Gruss Daniela

      Gruß zurück

      Heizer

      1. Hi Heizer

        Super Danke, funktioniert.
        Übrigens muß es dann in PHP ORDER BY 'new' DESC, 'name' heißen, aber ich hab noch nicht so recht verstanden, wann man die einfachen Anführungszeichen verwenden muß, und wann nicht (und wann die Apostrophzeichen für Tabellen wie in phpMyAdmin)

        Eigentlich sind die '' Stringbegrenzer in SQL und müssen bei
        Stringvariablen (uu auch bei enum, weis ich jetzt gerade nicht)
        angewendet werden, bei Feldnamen dürfen die eigentlich gar nicht
        verwendet werden.

        Kannst du mir die Quelle sagen woher du das hast? Und funktioniert
        es ohne nicht? Möglicherweise liegt es auch am Interface zu MySQL
        von PHP, das kenn ich nicht.

        Gruss Daniela

        P.S. http://learn.to/quote/

  2. Hi Forum

    Ich habe eine Datenbank mit Links, die ich nach zwei Kriterien sortieren will:

    1. Neue Links (gekennzeichnet durch ein Feld NEW=1)
    2. Alphabetisch

    Soll heißen, ganz oben kommen die neuen in Alphabetischer Reihenfolge, und dann die restlichen, auch in alphabetischer Reihenfolge.

    Hallo

    Wenn ich Dich recht verstanden hab, dann willst Du ne hierarchische Abfrage machen.
    Das müsste mit connect by prior gehen...

    Gruss Kerstin

    1. Hi Forum

      Ich habe eine Datenbank mit Links, die ich nach zwei Kriterien sortieren will:

      1. Neue Links (gekennzeichnet durch ein Feld NEW=1)
      2. Alphabetisch

      Soll heißen, ganz oben kommen die neuen in Alphabetischer Reihenfolge, und dann die restlichen, auch in alphabetischer Reihenfolge.

      Hallo

      Wenn ich Dich recht verstanden hab, dann willst Du ne hierarchische Abfrage machen.
      Das müsste mit connect by prior gehen...

      Sorry, aber das verstehe ich nicht, aber Danielas Vorschlag funktioniert.
      Bei der gelegenheit: Gibt es eigetnlich eine Ähnlich gute Docu für MySQL wie SelfHTML und auf php.net für HTML bzw. PHP? Hab noch nichts gefunden

      Gruss Kerstin

      vielen Dank

      Heizer

      1. Bei der gelegenheit: Gibt es eigetnlich eine Ähnlich gute Docu für MySQL wie SelfHTML

        Es gibt das MySQL-Handbuch von Guido Stepken, den Link hab ich aber grad leider nicht parat...kann ich Dir auch zumailen.

        Was meinst Du mit
        »»und auf php.net für HTML bzw. PHP ??

        als Einstieg in PHP find ich http://did.mat.uni-bayreuth.de/www2/
        sehr gut.
        Schau doch mal auf www.php-center.de - da sind auch Links zu weiteren Seiten

        Gruss Kerstin