Zum Inhalt springen

mySQL statistische Auswertung


Spike

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von el_pollo_diablo
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

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