SQL ORDER BY Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zitat von theone Beitrag anzeigen
    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.

    Kommentar


    • #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.

      Kommentar


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

        Kommentar


        • #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

          Kommentar


          • #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

            Kommentar


            • #7
              Zitat von Slava Beitrag anzeigen
              warum hört keiner auf @wahsaga :-)
              Weil meins auch funktioniert.

              Kommentar


              • #8
                Zitat von h3ll Beitrag anzeigen
                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.

                Kommentar


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

                  Kommentar

                  Lädt...
                  X