Etwas komplizierte ORDER BY Abfrage...

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

  • Etwas komplizierte ORDER BY Abfrage...

    Hallo!

    Ich habe folgendes Problem: bei der Anzeige einer Sammlung von CDs soll zunächst die Liste alphabetisch nach Künstlern sortiert werden. Soweit kein Problem. Aber am Ende der Liste sollen dann die Sampler aufgelistet werden. Hier kann natürlich nicht die Sortierung nach Künstler greifen, sondern nach dem Namen des Samplers. Ob es sich bei einer CD um einen Sampler handelt oder nicht, wird mittels eines Flags (0=normale CD, 1=Sampler) gekennzeichnet.

    Der Query sieht ungefähr so aus (aufs wesentliche reduziert, da kommen normalerweise noch mehr Daten dazu):

    SELECT a.name, m.name, m.sampler FROM art AS a, med AS m, relam AS am WHERE a.id = am.aid AND m.id = am.mid GROUP BY m.mid ORDER BY m.sampler ASC, a.name ASC, m.name ASC;

    Gibt es eine Möglichkeit, den ORDER BY Block so zu modifizieren, dass er nach a.aName sortiert wenn m.mSampler = 0 und nach m.mName wenn mSampler = 1? Oder muss ich da mit zwei getrennten Querys arbeiten? Denn im Moment sortiert er noch bei den Sampler nach dem Künstler, der als erstes diesem Sampler zugewiesen wurde, was ja so nicht ganz richtig ist.

    Ach so, meine MySQL Version ist leider noch Version 3.23.58.

  • #2
    versuch mal mit http://dev.mysql.com/doc/mysql/en/co...functions.html

    bei einfachen Sachen IF(...), sonst CASE ... WHEN ... THEN ... ELSE...

    Kommentar


    • #3
      Grandios, Danke! Und schon wieder was dazugelernt...

      Der Query wie er jetzt funktioniert:

      SELECT a.name, m.name, m.mSampler
      FROM art AS a, med AS m, relam AS am
      WHERE a.id = am.aid AND m.id = am.mid
      GROUP BY m.id
      ORDER BY m.sampler ASC ,
      CASE m.sampler
      WHEN 0 THEN a.name
      WHEN 1 THEN m.name
      END
      ASC

      Kommentar


      • #4
        ORDER BY IF(m.mSampler = 1, m.mName, a.aNAME) ASC finde ich irgendwie kürzer und übersichtlicher ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          Danke für den Hinweis. Mir waren die CASE bzw. IF-Anweisungen bislang nicht bekannt (bzw. brauchte sie vorher nicht) und hab mich da erstmal an ein Beispiel gehalten, was ich im Netz gefunden habe.

          Kommentar

          Lädt...
          X