SQL ORDER BY Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL ORDER BY Problem

    Folgendes Problem, bei der Ausgabe der Daten soll alles nach dem Liefernachnamen sortiert sein, jedoch die Zahlart Nachname ganz hinten stehen. Ich versuche mich schon seit Tagen dran, finde aber nichts passendes wie ich es lösen könnte.

    Code:
    SELECT auftrag.Status,
    auftrag.Id,
    auftrag.Zahlart,
    kunde.Kundennr,
    kunde.Lieferanrede,
    kunde.Liefervorname,
    kunde.Liefernachname,
    kunde.Lieferstrasse,
    kunde.Lieferplz,
    kunde.Lieferort,
    kunde.Lieferland
    FROM auftrag, kunde
    WHERE auftrag.Status = 'ausgang'
    AND auftrag.Kundenid = kunde.Kundennr
    ORDER BY
    auftrag.Zahlart,
    kunde.Liefernachname
    Bin für jede Idee dankbar
    Einpacken & Mitnehmen - SEO und CMS/Shop-Lösungen

  • #2
    Originally posted by theone View Post
    Folgendes Problem, bei der Ausgabe der Daten soll alles nach dem Liefernachnamen sortiert sein, jedoch die Zahlart Nachname ganz hinten stehen.
    Mit IF(zahlart=nachname, 1, 0) eine Pseudo-Spalte generieren, und deren Wert an geeigneter Position mit in die ORDER BY-Klausel aufnehmen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Das kommt auch auf die Information zu Liefernachname an.

      Je nachdem wie sie aussieht kann ein einfaches DESC (absteigend) helfen.

      Man kann ja jeden Sortierbegriff für sich aufsteigend oder absteigend sortieren.

      Comment


      • #4
        ... WHERE auftrag.Zahlart != 'Nachnahme' ORDER BY kunde.Liefernachname
        UNION
        ... WHERE auftrag.Zahlart = 'Nachnahme' ORDER BY kunde.Liefernachname

        Comment


        • #5
          Code:
          SELECT      a.Status, a.Id, a.Zahlart, k.Kundennr, k.Lieferanrede, k.Liefervorname, k.Liefernachname,
                      k.Lieferstrasse, k.Lieferplz, k.Lieferort, k.Lieferland
          FROM        auftrag a
          INNER JOIN  kunde k ON ( k.Kundennr = a.Kundenid )
          WHERE       a.Status = 'ausgang'
          ORDER BY    a.Zahlart = 'Nachnahme', k.Liefernachname

          Comment


          • #6
            warum hört keiner auf @wahsaga :-)

            SELECT a.Status, a.Id, a.Zahlart, IF(a.Zahlart = 'Nachnahme',1,0 ) as ding ,k.Kundennr, k.Lieferanrede, k.Liefervorname, k.Liefernachname,
            k.Lieferstrasse, k.Lieferplz, k.Lieferort, k.Lieferland
            FROM auftrag a
            INNER JOIN kunde k ON ( k.Kundennr = a.Kundenid )
            WHERE a.Status = 'ausgang'
            ORDER BY k.Liefernachname. ding
            Slava
            bituniverse.com

            Comment


            • #7
              Originally posted by Slava View Post
              warum hört keiner auf @wahsaga :-)
              Weil meins auch funktioniert.

              Comment


              • #8
                Originally posted by h3ll View Post
                Weil meins auch funktioniert.
                Ist ja im Prinzip auch das gleiche.
                Dein Vorschlag ist vielleicht sogar noch etwas schöner, weil man damit keine Spalte im Ergebnis hat, an deren Inhalt man gar nicht interessiert ist.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Comment


                • #9
                  super, es klappt jetzt einwandfrei!
                  besten Dank auch!
                  Einpacken & Mitnehmen - SEO und CMS/Shop-Lösungen

                  Comment

                  Working...
                  X