Mailinglisten-Archive |
Mahlzeit, ich bin zwar nicht der SQL-Guru, versuche mich aber trotzdem mal an einer Antwort. > Ich habe eine Tabelle: id (int) date (varchar). > In der id Spalte sollen nun Eintraege mehrfach vorkommen. > In einer Abfrage moechte ich so etwas wie eine Top7 der haeufigsten ID's > abrufen. > Ich habe mir folgendes gedacht: > SELECT COUNT(id) AS anzahl, id FROM tabelle GROUP BY id ORDER BY anzahl > LIMIT 7; Das geht meines Erachtens so nicht. Du mußt erst einmal ein array mit den eigentlichen votes herausbekommen ... select distinct vote from test; ... um dann mit diesem Array weiterzuarbeiten. select count(*) where vote=1 usw. Die beiden Selects müßte man nun irgendwie verknüpfen, will man alles in eine Abfrage bekommen. Meines Wissens kann aber MySQL nicht mit verknüpften SELECT's umgehen, so daß Du zwei Möglichkeiten hast. 1.) Du führst zwei Selects aus, die Du per php auswertest - würde ich so machen 2.) Du änderst Deine Tabellenstruktur Tabelle 1; - voting: CREATE TABLE voting( id INT NOT NULL, vote INT NOT NULL, PRIMARY KEY(id) ); Nun mußt Du in dieser Tabelle gleich direkt bei der Eingabe den Wert von vote (UPDATE voting SET vote=vote+1 WHERE id=...) um eins erhöhen. Willst Du den Zeitpunkt der Abstimmung noch retten, brauchst Du noch eine zweite Tabelle: CREATE TABLE vote_date( id INT NOT NULL, date TIME NOT NULL, PRIMARY KEY(id) ); Eine andere Möglichkeit fällt mir momentan nicht ein. Aber wie bereits geschrieben: ich bin kein SQL-Guru ;-) lasse mich aber dafür gerne eines Besseren belehren. So lerne ich auch noch was dazu. Hoffe trotzdem etwas geholfen zu haben. Bye, Heiko --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive