Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

mySQL statistische Auswertung

Empfohlene Antworten

Veröffentlicht

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.

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

  • Autor

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.