ورود

View Full Version : سوال: نمایش رتبه کاربران



hazembizak
دوشنبه 13 شهریور 1391, 18:23 عصر
می خواستم بپرسم چجوری می تونم با دادن مقادیری امتیاز کاربر را از بین تمام کاربران بسنجم

مثلا:رتبه: 80 از 500
یا رتبه 1 از 500

یعنی از تیبل users و کلمن points بوسیله ی ID ثبت شده کاربرا رتبه را مشخص کنه
فکر کنم واضح باشه
منم یکم مبتدیم

پیشاپیش ممنونم از راهنماییتون!

hazembizak
سه شنبه 14 شهریور 1391, 20:22 عصر
لطفا یکی جواب بده

نیاز دارم

miladamirzadeh
جمعه 17 شهریور 1391, 11:03 صبح
شاید ساده ترین راهش این باشه که تعداد کسانی که بیشتر از اون امتیاز دارند رو مشخص کنی.
SELECT
COUNT(*) `ROTBE`, `a`.`id`, `a`.`points`
FROM
`users` `a`
JOIN
`users` `b`
WHERE
`a`.`points` > `b`.`points`
GROUP BY `a`.`id`
ORDER BY `ROTBE`
البته این باعث می شه کسایی که امتیاز یکسان دارند رتبه ی یکسان بگیرند و رتبه هایی اصلاً به وجود نیان.
خروجی نمونه:
11, 6, 1
12, 1, 2
23, 5, 3
23, 2, 3
40, 3, 5
43, 7, 6
56, 8, 7
87, 9, 8
89, 10, 9
مساله ای که اینجا وجود داره اینه که رتبه 1 رو نشون نمی ده! چون شرط WHERE در مورد اون صدق نمی کنه. اگه کسی می تونه مشکل رو حل کنه من هم ممنون می شم.

miladamirzadeh
جمعه 17 شهریور 1391, 11:54 صبح
یه راه دیگه پیدا کردم که البته این هم مشکلاتی داره. معادل ROW_NUMBER تو SQL SERVER می باشد!
SET @ROTBE=0;
SELECT @ROTBE := @ROTBE+1 AS ROTBE, id, POINTS
FROM users
ORDER BY POINTS;
نمونه خروجی:
SELECT @ROTBE := @ROTBE+1 AS ROTBE, id, POINTS
FROM users
ORDER BY POINTS

+ ---------- + ------- + ----------- +
| ROTBE | id | POINTS |
+ ---------- + ------- + ----------- +
| 1 | 4 | 10 |
| 2 | 6 | 11 |
| 3 | 1 | 12 |
| 4 | 5 | 23 |
| 5 | 2 | 23 |
| 6 | 3 | 40 |
| 7 | 7 | 43 |
| 8 | 8 | 56 |
| 9 | 9 | 87 |
| 10 | 10 | 89 |
+ ---------- + ------- + ----------- +
10 rows
در اینجا کسایی که رتبه ی یکسان رو دارند پشت سر هم نشون می ده! یعنی به ترتیب INSERT رتبه بندی میشه! امیدوارم این تاپیک داغ بشه!

hazembizak
شنبه 18 شهریور 1391, 15:44 عصر
اینجوری دارم که نمایش رنکینگه !
می خوام تو پروفایل هر فرد امتیاز و رتبش نوشته بشه
مثلا:

LoginName | UserPoint | Rank

یعنی محاسبه ی رتبه یک کاربر با استفاده از آی دیش

بازم ممنون :دی

miladamirzadeh
دوشنبه 20 شهریور 1391, 20:08 عصر
اینجوری دارم که نمایش رنکینگه !
می خوام تو پروفایل هر فرد امتیاز و رتبش نوشته بشه
مثلا:

LoginName | UserPoint | Rank

یعنی محاسبه ی رتبه یک کاربر با استفاده از آی دیش

بازم ممنون :دی
منظور نمایشه یا محاسبه!؟ میشه یه جدول و نمونه ای از خروجی رو که توقع داری بگی؟

hazembizak
دوشنبه 20 شهریور 1391, 23:26 عصر
منظور نمایشه یا محاسبه!؟ میشه یه جدول و نمونه ای از خروجی رو که توقع داری بگی؟
منظورم محاسبست
یعنی تعداد کاربرا رو بشماره بعد از طریق امتیاز رتبه ی کاربر رو از کل محاسبه کنه ...