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.
MySQL abfrage zum Aussotieren und ausgeben
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.
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.
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
Gruss
Markus
PS: Habs grad probiert:
SELECT name, count(*) as anzahl FROM deinetabelle
group by name
order by anzahl
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Und jetzt noch das Limit:
Code: Alles auswählen
SELECT Name, COUNT(*) AS Anzahl FROM deinetabelle GROUP BY Name ORDER BY Anzahl LIMIT 3
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
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

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>";
}
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
