Zum Inhalt springen

Vernünftige Sortierung, trotz Group By Statement


Metaller

Empfohlene Beiträge

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 von Metaller
Information hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...