2016-10-26 53 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 –

相关问题