MySQL Einträge zählen

MM2410

Grünschnabel
Hallo,

ich betreibe eine Fansite eines Musikers und habe mir eine Live-Datenbank eingerichtet. Dort gibt es folgende Tabellen:

a) Eine Tabelle mit allen Tourneen (mit jeweils eigene TourID)
b) Eine Tabelle mit allen Konzerten, welche über eine TourID der jeweiligen Tournee zugeordnet werden. Außerdem werden die Konzerte mit einer lfd. ID unterschieden.
c) Eine Tabelle mit allen Setlists der Konzerte. Also welche Titel gespielt wurden. Über die ID werden die Setlists eindeutig den Konzerten zugeordnet. Zum besseren Verständnis mal ein Screenshot der Tabelle aus PHPMyAdmin im Anhang.

Nun zu meinem Problem:
Ich möchte ausgeben, welche Songs bisher gespielt wurden. Außerdem soll gezählt werden, wie oft. Wie kann man das simple Problem lösen?

Für eure Hilfe bin ich sehr dankbar. Meine PHP-Kenntnisse sind nich nicht die besten.
 

Anhänge

  • tabelle.jpg
    tabelle.jpg
    56,9 KB · Aufrufe: 97
Hallo,
Deine DB-Struktur - speziell das mit der Setlist-Tabelle - ist sehr unfein und deshalb werden solche simplen Aufgaben auch super kompliziert.
Besser wäre es gewesen, Du hättest eine Tabelle "Tracks", in der alle Lieder drinstehen, jedes mit eigener Track-ID. Etwa so:
Code:
+--+---------------+
|ID|Track          |
+--+---------------+
|1 |White Ashes    |
|2 |Darkness       |
|3 |Red Rain       |
|4 |More Than This |
| u.s.w...         |
Die "Setlist"-Tabelle ist dann nur noch eine reine Verknüpfungs-Tabelle zw. Konzert und Track:
Code:
+--+--------+--------+------+
|ID|Konzert |TrackNo |Track |
+--+--------+--------+------+
|1 | 1      |1       |2     |
|2 | 1      |2       |4     |
|3 | 1      |3       |24    |
|4 | 1      |4       |1     |
|5 | 2      |1       |4     |
|6 | 2      |2       |3     |
|7 | 2      |3       |1     |
|8 | 2      |4       |2     |
|9 | 2      |5       |18    |
|10| 2      |6       |24    |
|11| 3      |1       |5     |
|12| 3      |2       |2     |
|13| 3      |3       |4     |
u.s.w
Jetzt kannst Du alles Abfragen was Du willst: Tracks pro Konzert, Auf welchen Konzerten wurde Track x gespielt, wie oft wurden die Tracks gespielt, alles was das Herz begehrt - musst nur alles fein zueinander JOINen...

Mit der jetzigen Setlist-Tabelle wirst Du IMHO auf Dauer nicht glücklich...

Viele Grüße,
Martin
 
Aber wie löse ich das Problem, das eine PHP-Datei alle Titel zählt und ausgibt, welche Titel wie oft gespielt wurden?
 
Solche Sachen sind dann einfach als reine SQL-Abfragen zu lösen, PHP braucht sich nur noch um die Ausgabe zu kümmern.
Wie oft wurde jeder Titel gespielt:
Code:
SELECT
 tracks.track AS titel,
 COUNT(setlist.id) AS anzahl
FROM
 setlist
LEFT JOIN
 tracks ON setlist.track = track.id
GROUP BY
 setlist.track
ORDER BY
 anzahl DESC
Hab's nicht ausprobiert, das sollte aber das Prinzip verdeutlichen.

Grüße,
Martin
 
Danke für deine Hilfe!

Leider beherrsche ich solch komplexen Abfragen noch net.
Ich werde mich mal mit den zahlreichen Online-Hilfen auseinander setzen!

Vielleicht krieg ich es ja selbst hin!

Danke!
 
Zurück