2013-12-03 3 views
0

именно я хочу сортировки «refferals» таблице ниже:Сортировка и подсчитывают значение

 Referral   | IP 
    X     |x.x.x.x 
    X     |x.x.x.x 
    X     |x.x.x.x 
    nazmi    |x.x.x.x 
    nazmi    |x.x.x.x 
    Y     |x.x.x.x 

И я собираюсь это вернуть к столу как этот сортировочный восходящих:

No | username | Refferals 
1  | X   | 3 
2  | Nazmi  | 2 
3  | Y   | 1 
untill the-20th 

Как я что-то кодирую? , вот мой текущий код:

<?php 

      $getref = CMS::$MySql->Query("SELECT username FROM referrals GROUP BY username HAVING COUNT(username) !=0 ORDER BY COUNT(*) DESC"); 
      $num = CMS::$MySql->Query("SELECT username FROM referrals"); 

       for ($i = 1; $i <= 10; $i++) { 
       while($row = $getref->fetch_assoc() && $count = $num->fetch_assoc()){ 

         echo '<table><tr>'; 

         echo '<td>'.$i.'</td>'; 
         echo '<td>'.$row['username'].'</td><br>'; 
         while($count = $num->fetch_assoc()){ 
         echo '<td>'.$count->num_rows.'</td>'; 
         } 
         echo '</tr>'; 


               }} 
         echo '</table>'; 

       ?>   

Мне не удалось подсчитать, сколько реферальных средств оно имеет.

ответ

2

Вы можете изменить запрос:

SELECT username, count(username) as cnt FROM referrals GROUP BY username HAVING COUNT(username) !=0 ORDER BY COUNT(*) DESC 

Тогда вы можете просто использовать $ строки [ 'CNT'] в качестве требуемого счета

<?php 

$getref = CMS::$MySql->Query("SELECT username, count(username) as cnt FROM referrals GROUP BY username HAVING COUNT(username) !=0 ORDER BY COUNT(*) DESC"); 

echo '<table>'; 
for($i = 1; $i <= 10 && $row = $getref->fetch_assoc(); $i++) 
    { 
    echo '<tr>'; 
    echo '<td>'.$i.'</td>'; 
    echo '<td>'.$row['username'].'</td>'; 
    echo '<td>'.$row['cnt'].'</td>'; 
    echo '</tr>'; 
    } 
echo '</table>'; 
Смежные вопросы