2013-09-13 2 views
0

У меня возникли проблемы с поиском членов с большинством рефералов. Я искал вещи и пробовал вещи более 3 часов, так что это последнее мое средство. Моя цель состоит в том, чтобы указать имя пользователя и количество рефералов, которые у них есть.Выберите Count и Then Order By

Таким образом, каждый член реферала отмечен их идентификатором. , поэтому в примере test2 is ref. Таким образом, каждый человек ref имеет свой идентификатор.

id | username | ref 
1 | orig  |0 (for none) 
2 | test2  |1 (orig id) 
3 | another |1 (orig id) 

и цель состоит в том, чтобы повторить это. Если это возможно.

UserName | Refs 
test  1 
test2  0 

моя попытка. Это дает мне сумму, но она не заказывает их и не перекликается со многими.

$result = mysql_query("SELECT * FROM members"); 
echo '<table class="table table-bordered"><tr><th>Credits</th><th>Username</th></tr>'; 
while($row = mysql_fetch_array($result)) 
    { 
    $contest_id = $row['id']; 

    $result1 = mysql_query("SELECT COUNT(*) FROM members WHERE ref=".$row['id'].""); 
    while($row1=mysql_fetch_array($result1)) 
    { 

    $result_c = mysql_query("SELECT * FROM members ORDER BY ".$row1['COUNT(*)']."+0 DESC Limit 10"); 
    while($row_c = mysql_fetch_array($result_c)) 
    { 
    $top_id = $row_c['id']; 
    $find_c = mysql_query("select count(*) from members where user_id='$top_id'"); 
    $found_c = mysql_result($find_c,0); 
    echo '<tr><td>'; 
    echo $found_c; 
    echo '</td>'; 
    echo '<td>'; 
    echo $row_c['username']; 
    echo '</td>'; 
    echo '</tr>'; 
    }}} 
echo '</table>'; 
+0

Пожалуйста, включите код, который вы пробовали, и что пошло не так. – showdev

+0

Почему 'ref' не является числовым? –

+0

Должен ли 'ref' интерпретироваться как' referBy' или наоборот? –

ответ

0

Если я правильно понял вашу планировку стола, это должно сделать трюк.

SELECT t1.username, t2.numref 
FROM members t1 
LEFT JOIN (SELECT ref, COUNT(ref) as numref 
      FROM members 
      GROUP BY ref) t2 
ON t2.ref = t1.id 
ORDER BY numref DESC 

Он должен обеспечить значение NULL в numref колонке для пользователей, которые не сделали никаких рефералов.

Для справки, я добавил SQL-Fiddle!

+0

есть только один стол, я случайно отправил неправильную попытку. – user2777747

+0

Как вы можете видеть, я использую так называемое «самостоятельное присоединение»: соединение с той же таблицей ... –

+0

Я просто заметил в своем SQL-скрипте, что это потрясающе, я получил его, чтобы эхо-имя пользователя было правильным порядок, но как я эхо отзыва? – user2777747