2012-04-15 17 views
0

Ich habe eine Tabelle, wo die gleichen Daten immer wieder erscheint die Tabellenstruktur ist wie unten.id ist autoincrement.pm ist für userid.it wird wieder und wieder wie beliw table.i erscheinen wollen zeige die Ausgabe als Extrakt der gesamten Tabelle in absteigender Reihenfolge an. Angenommen, die Tabelle besteht aus 100 Zeilen und die Benutzer-ID 15 kommt 10 mal, was am höchsten ist, dann sollte es an der Spitze kommen, dann die andere ID, die als nächstes kommt. Ich habe versucht, aber nicht hier arbeiten, ist mein Code als auchmysql Abfrage zu zählen und Summe

id userid 
1  33 
2  34 
3  37 
4  33 
5  33 
6  37 

der Ausgang ich will, ist

 userid nos 
     33  3 
     37  2 
     34  1 

bitte führen. Ich habe versucht, mit diesem Code

$res = sql_query("select count(userid) as total from tableA"); 

echo'<table>'; 
while ($row = sql_fetch_array($res)) { 
echo ' <tr><td>'.$row['userid'].'</td></tr></table>'; 

Antwort

2
SELECT userid, COUNT(userid) FROM tableA AS nos GROUP BY userid ORDER BY nos DESC 

Dann können Sie zugreifen:

$row['userid'] für die Benutzer-ID

$row['nos'] für die Zählung

+0

wo ist der Name der Datenbanktabelle. Ich bekomme Fehler – Steeve

+0

Ich habe die FROM-Klausel vergessen, als ich gepostet habe. Ich habe es hinzugefügt. –

+0

hey ich bekomme Fehler Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das zu Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe 'Benutzer-ID, COUNT (Benutzer-ID) FROM Tabelle ASNos GROUP BY Benutzer-ID Zeile 1 – Steeve

3

Sie brauchen eine GROUP BY-Anweisung verwenden

SELECT userid, COUNT(userid) AS nos FROM tableA 
    GROUP BY userid ORDER BY nos DESC; 
+0

Es wäre besser, 'ORDER BY nos DESC' statt' ORDER BY COUNT (userid) DESC' zu verwenden. – Lion

+0

@Lion geändert, danke – gulyan

+0

@gulyan hey ich bekomme Fehler Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'Benutzer-ID, COUNT (Benutzer-ID) entspricht FROM Tabelle AS nos GROUP BY Benutzer-ID Zeile 1 – Steeve

0

Ihre Schleifenmethode ist falsch.

$res = sql_query("select userid, count(userid) as total from tableA group by userid order by total desc"); 
echo'<table>'; 
while ($row = sql_fetch_array($res)) { 
    echo ' <tr><td>'.$row['userid'].'</td><td>'.$row['total'].'</td></tr>'; 
} 
echo '</table>'; 
+0

Hey ich bekomme Fehler Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'Benutzer-ID, COUNT (Benutzer-ID) FROM Tabelle AS nos GROUP BY Benutzer-ID Zeile 1 entspricht – Steeve

+0

@Steeve Das ist, weil es wird' COUNT (Benutzer-ID) AS nos' und nicht 'tableA AS nos' – hjpotter92

+0

meine Abfrage ist SELECT Benutzer-ID, COUNT (Benutzer-ID) AS keine FROM Tabelle GROUP BY Benutzer-ID ORDER BY nos DESC bitte sagen, wo der Fehler ist – Steeve