2016-10-26 23 views
-2

這將是一個令人困惑的問題..我會盡力解釋它並儘可能提供更多信息。基本上,我擁有的是一個網站,人們可以上傳他們在遊戲中獲得的殺戮數量。我想要做的是在人物排行榜上展示人物的合併殺傷力。這比我預期的要難得多(LOL)。通過數據庫中行的組合值排序SQL結果

這裏是我的數據庫看起來像:

Database Screenshot

submission是入門的唯一ID。

usergt是用戶的遊戲標籤。

image並不重要。

userkilled是他們遇害的人。

status是確認殺死的狀態。

conftotal是我們通過圖像確認的總殺傷率(例如,條目5記錄了24殺)。

submitted僅僅是提交日期和時間的unix時間戳。

這裏是我的網頁上PHP:

<?php 
function getKills($gamertag) { 
    $conn = new mysqli("localhost", "rpsanet_seals", "k_,2N2Xbu}mr", "rpsanet_seals"); 
    if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);} 

    $sql = "SELECT conftotal FROM kills WHERE usergt='" . $gamertag . "'"; 
    $result = $conn->query($sql); 

    $ctotalklls = 0; 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $ctotalklls = $ctotalklls + $row["conftotal"]; 
     } 
    } else { 
     $ctotalklls = 0; 
    } 

    return $ctotalklls; 

    $conn->close(); 
} 
?> 
      <div class="mykills_content"> 
        <table class="mykills_table"> 
         <tr> 
          <th class="mk_first">Avatar</th> 
          <th>Gamertag</th> 
          <th>Latest Victim</th> 
          <th class="mk_last">Total Kills</th> 
         </tr> 
         <?php 

          $conn = new mysqli("localhost", "rpsanet_seals", "k_,2N2Xbu}mr", "rpsanet_seals"); 
          if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);} 

          $sql = "SELECT *, COUNT(*) AS magnitude 
          FROM kills 
          WHERE status='confirmed' 
          GROUP BY usergt 
          ORDER BY magnitude ASC 
          LIMIT 5"; 
          $result = $conn->query($sql); 

          if ($result->num_rows > 0) { 
           while($row = $result->fetch_assoc()) { 
            echo ' 
            <tr> 
             <td class="mykills_submission" data-submission="' . $row["submission"] . '"> 
              <div class="mykills_avatar"> 
               <img src="https://avatar-ssl.xboxlive.com/avatar/' . $row["usergt"] . '/avatarpic-l.png" class="mykills_victim_avatar" draggable="false" /> 
              </div> 
             </td> 

             <td> 
              ' . $row["usergt"] . ' 
             </td> 

             <td> 
              ' . $row["userkilled"] . ' 
             </td> 

             <td> 
              ' . getKills($row["usergt"]) . ' 
             </td> 
            </tr> 

            '; 
           } 
           echo '</table>'; 
          } else { 
           echo '</table><div class="fw-nokills">You have not submitted any kills yet.</div>'; 
          } 

          $conn->close(); 
         ?> 
       </div> 
      </div> 

,這就是它看起來像在頁面上:

page sample

我不知道我做錯了或如何解決它。如您所見,訂單不正確。它應該去CheapApples12,然後KILLER C00KIE X,然後ancrobbo97。

如果別的不明確,或需要其他任何信息,只是評論,我會盡快我可以對任何人..

我感謝所有幫助提前:)

重要信息:上述屏幕截圖中顯示的「Total Kills」是從getKills()函數生成的,而不是數據庫查詢結果。

+1

通過刪除圖像,並添加展示創建+幾行字的使用順序可以讓事情更容易爲人們所理解示例dat – e4c5

+0

不需要多個查詢嘗試這一個SELECT *,總和(conftotal)作爲totalkills 從殺害 WHERE status ='確認' GROUP BY usergt ORDER BY totalkills desc – JYoThI

+0

它提供0個結果 - https://i.gyazo.com/09b357f233a2145f02daf00c61ebe734.png – Bradley

回答

1

試試這個簡單的襯墊中sum(conftotal)sum(conftotal)

SELECT *,sum(conftotal) as totalkills FROM kills WHERE status='confirmed' GROUP BY usergt ORDER BY totalkills desc 
0
SELECT x.avatar, x.gamertag, x.magnitude AS magnitude FROM 
(SELECT avatar,gamertag, COUNT(*) AS magnitude 
FROM kills 
          WHERE status='confirmed' 
          GROUP BY usergt 
          LIMIT 5 
) AS x 
ORDER BY magnitude ASC 

我無法測試我寫的內容,但我認爲你可以從中獲得邏輯。 使用子查詢較慢,但它們相當強大。

+0

Thankyou如此之多的迴應,我沒有看到人們在爲互助而設計的平臺上低調提問的觀點。 – Bradley

+0

我剛剛嘗試過,它不適用於我..它給我0結果 – Bradley

+0

用您在數據庫中具有的右列更新它。 –

0

據我所知你想要降序顯示基於TotalKills計數,請嘗試使用以下查詢。

     "SELECT *, COUNT(ref_column_name) AS magnitude 
         FROM kills 
         WHERE status='confirmed' 
         GROUP BY usergt 
         ORDER BY magnitude desc" 
+0

也沒有工作.. https://i.gyazo.com/95c4e7c24ed24ae947148d255b47455e.png – Bradley

+0

嗨,因爲您正在使用getKills()函數來獲得總殺害,然後在查詢中執行此命令的子句不是必需的,如果您使用datatables.js來填充數據,那麼您將不得不使用javascript對「Total Kills」列進行排序,請參閱https://datatables.net/examples/basic_init/table_sorting.html –