0

users次のようなテーブルがあります。

-id
-email
-login
-admin
-coins
-cash
-premium
-IP
-pass
-ref
-signup
-online
-promote
-activate
-banned
-rec_hash
-country
-c_changes
-sex
-daily_bonus

ID 81 のユーザーが 10 人を参照した場合、それらの 10 人のref列には「81」が表示されます。

トップ 5 の参照テーブルを作成したいのですが、クエリと PHP での表示に問題があります。だれか助けてもらえますか?

彼らが紹介を持っていない場合、紹介として表示されないように0を除外するにはどうすればよい0ですか?

4

3 に答える 3

2

次のような単一の SQL ステートメントで実行できます。

SELECT ref, COUNT(*) AS num FROM users
GROUP BY ref ORDER BY num DESC LIMIT 5

しかし、それはユーザー行ではなく、5 つの ID を取得するだけです。その後、さらにクエリを実行して実際の行を取得できます。または、結合で上記のクエリを使用して、すべてを 1 つにします。

于 2012-11-15T23:33:16.673 に答える
0

紹介がない場合は 0 と表示されます

乱雑なデザイン - これは null にする必要があります。関係なく...

 SELECT u.login, ilv.referred
 FROM
 (SELECT ref, COUNT(*) AS referred
   FROM users
  WHERE ref IS NOT NULL
  AND ref>0
  GROUP BY ref
  ORDER BY COUNT(*) DESC
  LIMIT 0,5) ilv
INNER JOIN users u
ON ilv.ref=users.id
ORDER BY ilv.referred DESC;
于 2012-11-15T23:41:45.467 に答える
0

または、次のような SQL:

SELECT u.*, COUNT(*) as referrers FROM users r JOIN users u ON r.ref = u.id
GROUP BY u.id ORDER BY referrers DESC LIMIT 5

同じテーブルに対する結合でも、1 つのステートメントのみを使用する方が高速です。

于 2012-11-15T23:42:20.107 に答える