phpbar.de logo

Mailinglisten-Archive

[mysql-de]´Denkhilfe: wie bastle ich am besten eine hitlisten (chartsDB)?

[mysql-de]´Denkhilfe: wie bastle ich am besten eine hitlisten (chartsDB)?

Rico Koerner rico.koerner at heico.net
Mon Aug 30 16:56:00 CEST 2004


Michael Schoenboeck schrieb:

> Moin,
> 
> Ich betreibe ein keines aber feines webradio, wo sich die user lieder aus
> knapp 15.000 titeln selbst wünschen können.
> Jetzt will ich charts einführen, welche anhand der anzahl der wünsche
> rstellt werden.
> (das ganze einmal pro woche.
> Soweit auch kein problem, doch will ich wissen wo der titel in der vorwoche
> war, und seit wann er durchgehend unter den top40 plaziert ist, bzw. was die
> peak-position war die er je erreicht hat.
> 
> Aktuell logge ich jeden wunsch in einer tabelle, mit der songID und datum
> sowie KW.

Die KW kannst Du dir hier schonmal sparen, die kannst Du auch onTheFly 
mit einer mysql-Funktion bei der Abfrage erzeugen.

Gibt Dir die Top40 für die Woche X:
SELECT SongID, YEAR(datum) AS Jahr, WEEK(datum) AS KW, count(*) AS hits 
FROM wishlist WHERE KW=X AND Jahr=Y GROUP BY SongID ORDER BY hits DESC 
LIMIT 0,40

> Das soll dann eben einmal die woche aufbereitet werden. (sind ca. 2500
> datensätze pro monat.

Wenn Du das mitsamt der Platzierung in eine neue Tab (charts) schreibst,
kannst Du die Daten der alten KW evtl. löschen. Bei 2500 DS pro Monat
ist das aber auch nicht gleich nötig.

Die beste Platzierung und die zugehörige KW hast Du mit:
SELECT KW, MIN(Platz) FROM charts WHERE SongID=Z GROUP BY SongID
schnell herausgefunden.

Das 1. Mal in den Charts mit .. MIN(KW) ... WHERE Jahr=Y ...

usw.

Die längste Anwesenheit in den Charts anhand des Verlaufs
... WHERE SongID=Z ORDER BY Jahr DESC, KW DESC
und dann in PHP nach der ersten 'Lücke' suchen oder bei den Meta-Daten 
die Anzahl der Wochen ohne Unterbrechung abspeichern.
Was besseres fällt mir hier nicht ein.

Die Anzahl der Wochen insgesamt geht ja wieder mit einem count()

> Meine frage nun,
> Hat sowas schon mal wer gebastelt?

Bin grad selbst bei sowas ähnlichem. ;-)

> wie bau ich da am besten und intelegentesten die tabellen auf?
> 
> Also ich brauch nur ne sinnvolle tabellen strucktur, den rest kann ich mir
> mit php selbst basteln.

Letztendlich brauchst Du doch nur 1 Tabelle mit den Meta-Informationen 
zum Song, 1 für die Wünsche und 1 für die Charts. Vielleicht geht es 
auch ohne die Charts-Tabelle, aber das werden dann endlose Abfragen und 
das ist bestimmt nicht sinnvoll.

Anregungen genug? :-)


Ciao, Rico


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive