我在尝试找到推荐人最多的成员时遇到了一些问题。我一直在寻找东西并尝试超过3个小时的东西,所以这是我的最后一招。我的目标是列出会员用户名和他们推荐的推荐数量。
因此每个成员推荐都标有他们的ID .. 所以在示例中test2是orig的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 :(得分: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!