Spike Geschrieben 11. März 2010 Teilen Geschrieben 11. März 2010 Hallo Ich suche grade den möglichst einfachen Lösungsansatz für ein SQL Statement. Aufgabe: Es gibt eine Datenbank mit Büchern und Themen. Autoren können nun diese Bücher einer Auswahl von Themen zuordnen. Dies wird in der Reviewtabelle abgebildet und verknüpft. Nun möchte ich als Ergebnis, wie oft Buch XY welches Thema XY zugeordnet wurde. Dabei ist mir das Buch bekannt. Folgende (vereinfachte) Tabellen: Reviews id book_id topic_id author Book id title Topic id title Als Ergebnis möchte ich: Buch | vorgeschlagene Themen Dort steht dann jedes Buch 1 x drin, neben dem Buch in der Spalte "vorgeschlagene Themen" genau jedes Thema einmal mit einer Zahl daneben. Da die Anzahl der Themen flexibel ist ... weiß ich noch nicht so recht, wie ich das angehen soll. Ich müsste eine Art "Schleife" für jedes Buch definieren um die Themen abzufragen? Z. B. mit SELECT SUM(topic_id) as topic_count FROM reviews WHERE book_id = 1 bekomme ich ja nur die Anzahl an Bewertungen für dieses Buch. Nicht aber die Anzahl jedes einzelnen Topics für das Buch. Mir fehlt hier irgendwie noch der Ansatz, wie ich weiter vorgehe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
el_pollo_diablo Geschrieben 11. März 2010 Teilen Geschrieben 11. März 2010 (bearbeitet) der gepostete ansatz mit der "verbindungstabelle" "reviews" sieht ja schon mal ganz gut aus, nun solltest du noch die tabellen "topic" und "book" mit der tabelle verbinden (join) und danach kannst du nach themen gruppieren (group by). danach kannst du mit einer der mysql-string-funktionen (funktionsname ist mir gerade entfallen) alle, mit dem buch verbundenen themen, als zeichenkette ausgeben lassen. alle notwendigen befehle kannst du im mysql-handbuch online finden. Bearbeitet 11. März 2010 von el_pollo_diablo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Spike Geschrieben 11. März 2010 Autor Teilen Geschrieben 11. März 2010 Mein Ansatzproblem ist im Moment eher, die einzelnen Summen auszugeben. Unter topic_id verstecken sich ja X-fache Themen. Das sieht z. B. so aus: Reviews id | book_id | topic_id | author 1 | 1 | 1 | Schmitz 2 | 2 | 1 | Schmitz 3 | 1 | 3 | Meier 4 | 1 | 4 | Schuster Wenn ich SUM (topic_id) mache, bekomme ich nicht die Anzahl der Topics des Buches 1 mit topic_id = 1. Oder sollte ich das resultset lieber in PHP parsen? Ich wollte aber schauen, ob es nicht komplett mit SQL geht, das ist doch sicher performanter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
el_pollo_diablo Geschrieben 11. März 2010 Teilen Geschrieben 11. März 2010 ups... da habe ich wohl was überlesen :upps in diesem fall sollte es mit einer gruppierung nach book_id (falls in der where klausel mehr bücher stehen sollten) und count(topic_id) gehen. damit sollte das resultset nur noch eine zeile pro buch haben (durch where eingeschränkt) und als count die anzahl (nicht die aufsummierten) der themen. 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.