1

参照数が最も多いusersテーブルからuser_idを取得しようとしています。タイトルが曖昧で申し訳ありませんが、これが何と呼ばれているのかわかりません。

PHPとMYSQLを使用します。

例:

CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(180) CHARACTER SET utf8 NOT NULL,
  `ip` varchar(180) CHARACTER SET utf8 NOT NULL,
  `registered` varchar(180) CHARACTER SET utf8 NOT NULL,
  `lastonline` varchar(180) CHARACTER SET utf8 NOT NULL,
  `referral` varchar(180) CHARACTER SET utf8 NOT NULL,
  `url` varchar(180) CHARACTER SET utf8 NOT NULL,
  `points` float NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6544 ;

ユーザーは次のようになります。

1, 'username', 'ipaddy', 'date', 'date', '**REFERRAL**', 'url', 13633

すべてのユーザーテーブルで同じ参照が最も多いuser_idを見つけようとしています。ユーザー4に、紹介varcharに同じものを持つ10人の異なるユーザーがいるとします。すべてのユーザーを調べて紹介をログに記録せずに、ユーザー4を表示するように選択し、最も多いユーザーを選択するにはどうすればよいですか。

もっと簡単な方法が必要です...

どんな助けでも大歓迎です。ありがとう!

編集:申し訳ありませんが、紹介はname別のユーザーのものであり、ではありませんuser_id

4

3 に答える 3

2

SQLに少し追加されました:

SELECT referral, count(*) AS count FROM users 
WHERE referral IS NOT NULL AND referral != ''
GROUP BY referral ORDER BY COUNT(referral) DESC
于 2012-06-04T06:47:50.407 に答える
1

これを試してみてください。これでうまくいきます。しかし、上記の私のアドバイスを考慮してみてください。ただし、今のところ、これを使用してください。

SELECT 
    ref.prime,
    ref.num_of_refferals
FROM
(
    SELECT 
        referral AS prime,
        COUNT(*) AS num_of_refferals,
        NAME
    FROM
        users
        WHERE
                referral != ''
    GROUP BY
        referral
) AS ref
ORDER BY 
    ref.num_of_refferals
DESC
LIMIT 1
于 2012-06-04T07:36:36.523 に答える
0

他のユーザーからの紹介がなかったため、同様にそれらをカウントし、上位の紹介には空白を返していたようです。

パパイアティスは以下を提供した

SELECT referral FROM users GROUP BY referral ORDER BY COUNT(referral) DESC LIMIT 1

紹介フィールドが空でないことを確認し、ユーザーが持っていた紹介の数を取得したいと思いました。

SELECT referral, count(*) as count FROM users WHERE referral != '' GROUP BY referral ORDER BY COUNT(referral) DESC

助けてくれてありがとう!

于 2012-06-04T07:47:47.327 に答える