phpbar.de logo

Mailinglisten-Archive

Re: Top Seven
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Top Seven



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 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive