Seite 1 von 1
MySQL abfrage zum Aussotieren und ausgeben
Verfasst: 15.08.2009 18:50
von X360 Andy
Ich habe eine Datenbank mit mehrenen Tausend einträgen.
Ich möchte diese Sotieren nach der Häufig eines Namens.
Beispiel
Spiel|Name
_____________
1,Tim
2,Tim
3,Leon
4,Lisa
5,Heins
6. TIm
7,Tim
8,Günter
9,Franz
10. Lisa
11. Leon
12. Leon
Jetzt gibt es 6 verschiedene Namen
Es sollen aber nur die 3 ausgegeben werden die am meisten vorkommen.
So sollte das dann auf der HTML Seite ausgeben werden.
1. Tim | 4
2. Leon | 3
3. Lisa | 2
Wie müsste ich so eine Abfrage machen ?
Ich könnte einen hässlichen umweg über PHP machen und sie dort aussotieren ... aber das muss doch schöner gehen oder ?
Mein MySQL können ist noch sehr begrenzt....
Würde mich freuen wenn mir jemand helfen könnte.
Verfasst: 17.08.2009 09:59
von macmark
Hi,
schau dir mal die GROUP BY - SQL Funktion an.
Da kannst du nach Kriterien gruppieren und z.b. zählen.
Z.b.:
Select Name, count(*) as Anzahl from DeineTabelle
GROUP BY Name
Fasst die Namen zusammen und zählt die Einträge pro Name.
Gruss
Markus
PS: Weiss grad nicht ob MySQL auch direkt beim GROUP BY sortiert. Ansonsten einfach ein "ORDER BY Name" dranhängen.
Verfasst: 17.08.2009 10:00
von macmark
Sorry.... du willst ja nach der Anzahl sortieren. Probier dann mal ob du mit einem ORDER BY Anzahl direkt danach sortieren kannst. Ansonsten aus der ersten Abfrage eine View bauen und dann die Ergebnisse sortieren.
Gruss
Markus
PS: Habs grad probiert:
SELECT name, count(*) as anzahl FROM deinetabelle
group by name
order by anzahl
Verfasst: 17.08.2009 18:05
von NicTheQuick
Und jetzt noch das Limit:
Code: Alles auswählen
SELECT Name, COUNT(*) AS Anzahl FROM deinetabelle GROUP BY Name ORDER BY Anzahl LIMIT 3
Verfasst: 17.08.2009 18:38
von X360 Andy
Vielen dank euch beiden, ich hatte diese Funktion bereits gefunden , allerdings konnte ich mit dem Syntax nichts anfangen.
Ein brauchbares Beispiel hatte ich dazu auch nicht gefunden.
Umso dankbarer bin ich für die Antwort hier
Soweit geht das ganze , nur wie kann ich das jetzt ausgeben ?
Bekomme bei der Methode hier
Die Fehlermeldung
Catchable fatal error: Object of class stdClass could not be converted to string in
So sieht der Code aus
Code: Alles auswählen
$top_abfrage = "SELECT Name, COUNT(*) AS Anzahl FROM galgen GROUP BY Name ORDER BY Anzahl LIMIT 3";
$top_ausgabe = mysql_query($top_abfrage);
while($row = mysql_fetch_object($top_ausgabe))
{
echo "$row <br>";
}
EDIT
Ach verdammt ... hab vergessen noch die Tablle abzurfragen in der Schleife ; "echo "$row-> Name <br>";" zeigt mir die Ergebnise
Jetzt noch ein "DESC" in die Abfrage reinmachen, damit das überhaupt richtig einen Sinn ergibt und alles ist Perfekt.
Tausend Dank euch beiden

Verfasst: 17.08.2009 23:08
von KeyKon
Verfasst: 19.08.2009 18:01
von X360 Andy
Hab erlich gesagt auch nicht danach hier im Forum gesucht, da ich auch nicht wusste mit welchen begriffen ...
Thx