SQL: Group by

S

StephanSch

Aktives Mitglied
Thread Starter
Dabei seit
24.07.2006
Beiträge
406
Reaktionspunkte
1
Ich möchte Werte, die in einem bestimmten Feld sind gruppiern. Das geht wie folgt:

Code:
$query = mysql_query("
				SELECT
					".mysql_real_escape_string($field)."
				FROM 
					".mysql_real_escape_string($table)."
				GROUP BY
					".mysql_real_escape_string($field)."
				");

Nun möchte ich in dem SQL Statement aber noch mitgeben, dass es mir die Datensätze so sortieren soll, dass die Begriffe die am häufigsten vorkommen als erstes im $query Array stehen. Und dann soll mir die SQL nicht alle gruppierten Werte zurück gegeben, sondern nur die ersten 5.

D.h. ich möchte, dass mein SQL Statement mir die häufigsten 5 Begriffe aus einem bestimmten Feld zurückgibt. Habt ihr eine Idee?
 
Code:
$query = mysql_query("
				SELECT
					".mysql_real_escape_string($field)."
				FROM 
					".mysql_real_escape_string($table)."
				GROUP BY
					".mysql_real_escape_string($field)."
				ORDER BY
					COUNT(".mysql_real_escape_string($field).") DESC
				LIMIT 0,5
				");

Spontaner Versuch, könnte klappen ;)
 
Danke für die Antwort, scheint teilweise zu funktionieren.
Könntest du dein ORDER BY erklären, ich kenne das so:
ORDER BY feldname ASC/DESC, ... wie oder was bringt dann das COUNT ?

Das Limit funktioniert nicht, bei Limit 0,1 kommt z.B. kein Ergebnis und bei 0,2 kommt eins? o_O
 
COUNT ist eine Zählfunktion von MySQL die zusammen mit GROUP die Vorkommnisse des Feldes zählt.

Probier sonst mal LIMIT 5.
 
Das Problem mit dem LIMIT ist glaube ich, dass Leerfelder auch mit gruppiert werden... wie kann ich das ausschließen?
 
*falsches Forum ==> verschieb*

Zusatztipp: Das ist ein SQL-Problem, laß also den PHP Code zunächst weg und löse nur Dein SQl-Problem entweder mit der SQL-Workbench von MySQL oder mit SequelPro!
 
Zurück
Oben Unten