2012-04-15 15 views
0

私は同じデータが何度も繰り返し現れるテーブルを持っています。テーブル構造は以下のようになります.idはautoincrement.pmです。これはuserid.itのためのものです。降順でテーブル全体の抽出として出力を表示します。テーブルが100行で構成されていて、userid 15が10回来ると仮定すると、それは一番上に来て、次のIDに来るはずです。私が試したが、ここで働いていないことにも私のコードですmysqlクエリの数と合計を

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

私が欲しいの出力が案内してください

 userid nos 
     33  3 
     37  2 
     34  1 

です。私は、あなたがアクセスすることができます。このコードで

$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>'; 

答えて

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

を試してみました:ユーザーIDの

$row['userid']

$row['nos']をあなたはGROUP BYステートメントを使用する必要が数

+0

は、データベーステーブル名です。エラーが発生しました – Steeve

+0

投稿時にFROM句を忘れました。私はそれを追加しました。 –

+0

ちょっと、エラーが発生しています。SQL構文にエラーがあります。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックして、正しい構文が1行目の 'userid、COUNT(userid)FROM tableA AS nos GROUP BY userid'の近くで使用されるようにしてください。 – Steeve

3

ため

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

'ORDER BY COUNT(userid)DESC'ではなく' ORDER BY nos DESC'を使う方が良いでしょう。 – Lion

+0

@Lionが修正されました。 – gulyan

+0

@gulyanよろしくお願いします。エラーが発生しています。SQL構文に誤りがあります。あなたのMySQLサーバーバージョンに対応するマニュアルをチェックしてください。正しい構文は、1行目の 'userid、COUNT(userid)FROM tableA AS nos GROUP BY userid'の近くで使用してください。 – Steeve

0

ルーピングの方法が間違っています。

$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

エラーが発生しました。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックしてください。正しい構文については、1行目の 'userid、COUNT(userid)FROM tableA AS nos GROUP BY userid'の近くで使用してください。 – Steeve

+0

@Steeveそれは 'COUNT(userid)AS nos'ではなく 'tableA AS nos' – hjpotter92

+0

私のクエリはSELECT userid、COUNT(userid)AS nos FROM tableA GROUP BY userid ORDER BY nos DESCは間違いがどこにあるか教えてください – Steeve