Metaller Geschrieben 9. Oktober 2012 Teilen Geschrieben 9. Oktober 2012 (bearbeitet) Hallo Leute, ich habe eine großes Problem mit der sortierung der Ausgabe. Ich habe etwas gegoogelt und gefunden, das es am GROUP BY-Statement liegen müsste. Allerdings habe ich keine Lösung dazu gefunden. Vielleicht könnt ihr mir helfen. SQL Befehl SELECT Sammlung.ID, Sammlung.Editionenen_ID FROM Sammlung, Editionenen, Alben, InterpretenAlben, Interpreten WHERE Sammlung.User_ID = $User_ID AND Sammlung.Editionenen_ID = Editionen.ID AND Alben.ID = Editionen.Alben_ID AND Alben.ID = InterpretenAlben.Alben_ID AND InterpretenAlben.Interpreten_ID = Interpreten.ID GROUP BY Sammlung.Editionenen_ID ORDER BY Interpreten.Name, Alben.ReleaseYear [/PHP] Wenn ihr die Datenbank dazu braucht, müsst ihr bescheid geben Das Problem ist, dass das Order By Statement komplett ignoriert wird. Es sei noch dazu gesagt, das es sich hierbei um MySQL handelt. Habt ihr vielleicht eine Idee? Danke im vorraus. Gruß Bearbeitet 9. Oktober 2012 von Metaller Information hinzugefügt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 10. Oktober 2012 Teilen Geschrieben 10. Oktober 2012 Hi, typisch mysql. Die GROUP BY Klausel ist falsch, mysql meldet das aber nicht. Jedes Feld, dass im SELECT nicht in einer Aggregatsfunktion (COUNT,MAX,MIN,SUM etc)hinterlegt wird, muss in die GROUP BY Klausel. Jede andere DB würde dein Statement nicht ausführen. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Metaller Geschrieben 10. Oktober 2012 Autor Teilen Geschrieben 10. Oktober 2012 Hallo, danke für deine Antwort. Jetzt wird zumindest schon einmal sortiert. Nur leider nicht richtig. Das Problem ist, wenn ein Album, mehr als einen Interpreten hat (Split Alben), dann passt das leider nicht. Wenn ich alle Alben rausfilter, die mehr als einen Interpreten haben, funktionierts. Vielleicht dafür auch noch einen Lösungsvorschlag? Oder benötigst du mehr Informationen dazu? Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 10. Oktober 2012 Teilen Geschrieben 10. Oktober 2012 Was genau passt dann nicht? Wie soll die Sortierung aussehen (Beispiel) und wie sieht das SQL momentan aus? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Metaller Geschrieben 10. Oktober 2012 Autor Teilen Geschrieben 10. Oktober 2012 Aktueller SQL: SELECT Sammlung.ID, Sammlung.Editionenen_ID FROM Sammlung, Editionenen, Alben, InterpretenAlben, Interpreten WHERE Sammlung.User_ID = $User_ID AND Sammlung.Editionenen_ID = Editionen.ID AND Alben.ID = Editionen.Alben_ID AND Alben.ID = InterpretenAlben.Alben_ID AND InterpretenAlben.Interpreten_ID = Interpreten.ID GROUP BY Sammlung.Editionenen_ID, Sammlung.ID ORDER BY Interpreten.Name, Alben.ReleaseYear [/PHP] Die Sortierung soll in etwa so aussehen (sind jetzt Beispiele, was mir gerade spontan einfällt): [code]Cannibal Corpse; Metallica; Rammstein Disbelief; Gorgoroth Gorgoroth Hackneyed Frei.Wild; Saltatio Mortis[/code] Aber leider sieht die Ausgabe so aktuell aus: [code]Frei.Wild; Saltatio Mortis Disbelief; Gorgoroth Gorgoroth Hackneyed Cannibal Corpse; Metallica; Rammstein[/code] Wenn ich Alben mit mehr als einem Interpreten rausfilter, passt es. Halt nur ohne die Alben mit mehreren Interpreten. Aktuell regel ich das noch über einen zweiten SQL, was ich leider auch ungern mache. Aber so war es erstmal einfacher, die Alben mit doppelten Interpret zusammengefasst auszugeben. [PHP] SELECT Interpreten.ID, Interpreten.Name FROM Interpreten, InterpretenAlben, Editionen WHERE Editionen.ID = $row->Editionenen_ID AND Editionen.Alben_ID = InterpretenAlben.Alben_ID AND Interpreten.ID = InterpretenAlben.Interpreten_ID ORDER BY Interpreten.Name Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 10. Oktober 2012 Teilen Geschrieben 10. Oktober 2012 Dein SQL liefert sicherlich nicht die Ausgabe, die Du gepostet hast. Du selektierts eine ID und Edition_ID postest aber mit Semikolon getrennte Bandnamen? Aber wenn man sich das oft genug durchließt, kommt man irgendwie drauf, was Du haben möchtest und was du momentan machst. Du möchtest nicht nur Sortieren, sondern auch Pivotieren (und nicht gruppieren) und zwar innerhalb einer Sammlung alle Alben in einer Zeile alphabetisch. Ich weiß nicht, ob das in mysql per Befehl möglich ist, dazu kenne ich die DB zu wenig. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Metaller Geschrieben 10. Oktober 2012 Autor Teilen Geschrieben 10. Oktober 2012 Ah, die Ausgabe kommt im Zusammenhang mit dem 2. SQL Befehl. Also ein gewollte Ausgabe ist (jetzt nur mit einem Bandnamen): + AC/DC - Back in Black - The Razors Edge + Judas Priest - Jugulator + Metallica - Master of Puppets - St. Anger Was benötigst du denn für Informationen? Meinst du, du weißt nicht wie meine Datenbank aufgebaut ist oder weißt kennst du allgemein MySQL nicht gut genug? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 11. Oktober 2012 Teilen Geschrieben 11. Oktober 2012 Hi, so eine Ausgabe würde ich in zwei Schritten realisieren. Zum einen die betreffenden Bandnamen sotiert selektieren und anschließend pro Bandname die zugehörigen Alben ebenfalls sortiert selektieren. D.h. du hast zwei Schleifen: Eine äußere über die Bandnamen und die innere über die zugehörigen Alben. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Metaller Geschrieben 11. Oktober 2012 Autor Teilen Geschrieben 11. Oktober 2012 Aktuell ist es so aufgebaut: - Sammlung nach Interpreten sortieren (Rückgabe der Alben_ID) - Mit der Alben_ID die Interpreten finden und sortieren - Und dann, alle Alben ausgeben, die in der Sammlung sind und diese Interpreten haben Und bei den ersten beiden gibt es halt die Sortierungsprobleme, die ich oben angesprochen habe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.