MySQL abfrage zum Aussotieren und ausgeben

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

MySQL abfrage zum Aussotieren und ausgeben

Beitrag 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.
macmark
Beiträge: 49
Registriert: 15.07.2009 16:00
Wohnort: Köln

Beitrag 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.
macmark
Beiträge: 49
Registriert: 15.07.2009 16:00
Wohnort: Köln

Beitrag 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
Benutzeravatar
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

Beitrag 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
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag 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 :allright:

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

:allright:
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

(\/) (°,,,°) (\/)
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Hab erlich gesagt auch nicht danach hier im Forum gesucht, da ich auch nicht wusste mit welchen begriffen ...

Thx
Antworten