2015-08-27 2 views
1

Программа Идеальные:

А пользователь подписывают команды с нашей программой, а затем поступает в количество миль они идут за день/неделю/и т.д .. Кроме того, в ходе программы мы размещаем небольшие события , События будут иметь летчики с QR-кодами, и пользователь сканирует код и вводит их информацию. Как только они это сделают, пользователь получает кредит за то, что был на этом мероприятии. На веб-сайте есть система баллов, основанная на том, какие события они посещают, и сколько миль они ходят.полноразмерных сортировочные вопросы

Ситуация:

У меня есть 2 таблицы, содержащие две различные переменные, которые должны подвести их, а затем в каждом из них используют разделение, чтобы определить значение точки для этой суммы, а затем поместить его в лидера и поместите его в порядке убывания заработанных очков.

В настоящее время он сортирует их по убыванию, по милям.

Любые идеалы о том, как я исправить это? Я думал, может быть, какая-то магия массива, где я храню информацию каждого пользователя в массиве, а затем вытаскиваю ее, но у меня нет идеала, как даже начать с нее.

Things отметить:

Пользователей имя хранятся хранятся в таблице: Team_Assign

миля пользователя шла хранятся в таблице: Miles

участия события пользователя хранятся в Таблица: События

Я внутренне соединяю эти три таблицы вместе.

Пример:

10 миль 1 точку и 2 события 1 балл.

Джон имеет 10 миль шли, и 4 события, которые были бы 3 баллом Джейн 20 миль и 1 мероприятие, которые были бы в 2,5 балла

В настоящее время он сортировочное тем, кто имеет наибольшее количество миль, и Я понимаю, почему это так, но я не знаю, как повторить запрос, чтобы он сортировал точки, установленные во время цикла while.

Он должен показать:

Иоанна 3

Джейн 2,5

вместо этого он показывает:

Джейн 2,5

John 3

Код:

<?php 
$Count = 0; 
$LB_User_Query = " SELECT Miles_User, Team_Assign_Name, SUM(Miles_Amount) AS 'Miles', SUM(Event_Count) AS 'Event_Count2' 
        FROM Team_Assign 
        INNER JOIN Miles ON Team_Assign_User = Miles_User 
        INNER JOIN Event ON Team_Assign_User = Event_User 
        GROUP BY Miles_User, Team_Assign_User, Team_Assign_Name 
        ORDER BY Miles, Event_Count2 Desc"; 
$LB_User_stmt = $conn->prepare($LB_User_Query); 
$LB_User_stmt->execute();       
$LB_User_stmt->bind_result($Miles_User, $Team_Assign_Name, $Miles, $Event_Count2); 

while (mysqli_stmt_fetch($LB_User_stmt)) 
{ 
    $User_Miles = $Miles; 
    $Count = $Count + 1; 

    $Miles_Points_indc = 10; 
    $Event_Points_indc = 1; 

    $Miles_Points_Total_1 = $User_Miles/$Miles_Points_indc; 
    $Miles_Points_Total_2 = $Miles_Points_Total_1/$Event_Count2; 
    $Event_Points_Total = $Event_Count2/$Event_Points_indc; 

    $Total_Points = $Miles_Points_Total_2 + $Event_Points_Total; 
    $Total_Points_Round = round($Total_Points, 2); 

    echo'<tr>'; 
      echo'<td>'.$Count.'</td> 
       <td>'.$Team_Assign_Name.'</a></td> 
       <td>'.$Total_Points_Round .'</td>'; 
    echo'</tr>'; 
    } 
?> 

ответ

1

Вы должны применить отдельный desc модификатор к каждому столбцу вас сортировать по:

$LB_User_Query = " SELECT Miles_User, Team_Assign_Name, SUM(Miles_Amount) AS 'Miles', SUM(Event_Count) AS 'Event_Count2' 
        FROM Team_Assign 
        INNER JOIN Miles ON Team_Assign_User = Miles_User 
        INNER JOIN Event ON Team_Assign_User = Event_User 
        GROUP BY Miles_User, Team_Assign_User, Team_Assign_Name 
        ORDER BY Miles DESC, Event_Count2 Desc"; 
# missing here --------------------^ 

 Смежные вопросы

  • Нет связанных вопросов^_^