因此,如果我的头衔有些混乱,我相信是这样。顺便说一下,我正在为SQL使用medoo API,所以这只是一小部分信息,因此您不会被以下示例弄糊涂。
示例表
+----+------------+----------------+-------------+
| id | playerName | infractionType | infractedBy |
+----+------------+----------------+-------------+
| 1 | Alpha | ET1 | Admin |
| 2 | Alpha | ET1 | Admin |
| 3 | Alpha | ET1 | Admin |
| 4 | Delta | ET1 | Admin |
| 5 | Echo | ET1 | Admin |
| 6 | Echo | ET1 | Admin |
| 7 | Delta | ET1 | Admin |
| 8 | Alpha | ET1 | Admin |
+----+------------+----------------+-------------+
好吧,让我们回顾一下基础知识。如果执行这样的foreach循环:
foreach ($medoo->query("SELECT * FROM table1) as $entry) {
echo $entry['playerName'];
}
因此,您应该知道,它将打印出所有playerName。现在,我想要的是打印出playerName的出现并将其回显。因此,对于无序打印,代码将位于以下几行:
foreach ($medoo->query("SELECT DISTINCT playerName FROM table1) as $entry) {
echo $entry['playerName'];
echo $medoo->count("infractions", ["playerName" => $entry['playerName']);
}
无论如何,“我不想要”是我要订购的,但我不知道如何订购。我到处都在看google看到了'count()'sql命令,但就我所知它对我基本上没有用。
我想知道的
当前代码
foreach ($GoldenData->query("SELECT DISTINCT playerName FROM infractions") as $player) {
foreach ($GoldenData->query("SELECT COUNT(playerName) AS playerName FROM infractions WHERE playerName = '" . $player['playerName'] ."' ORDER BY COUNT(playerName) DESC") as $infracted) {
echo "<tr>";
echo "<td>";
echo $player['playerName'];
echo "</td>";
echo "<td>";
echo $infracted['playerName'];
echo "</td>";
echo "<tr>";
}
}
我想解释什么
这也在评论中,但我只是在这里添加它,以便其他人可以更好地看到它。
因此,这个想法基本上是按TOTAL INFRACTIONS的计数排序,然后按降序排序(从最大到最小)。现在的问题是,我没有我不想添加的“ totalInfractions”列,除非没有该列没有其他方法可以这样做。因此,问题是,是否有可能在不添加'totalInfractions'列的情况下完成此操作,或者是否还有其他方法可以通过其他SQL STATEMENTS或PHP函数来实现。
如果您不了解某些内容,请告诉我,我会尽力清除。我确实知道我要的东西有点混乱。
如果我了解您要完成的工作...
我跑了这个查询:
SELECT COUNT(id), playerName from Example group by playerName;
输出是这样的:
+-----------+------------+
| count(id) | playername |
+-----------+------------+
| 4 | Alpha |
| 2 | Delta |
| 2 | Echo |
+-----------+------------+
我们正在做的是对每个ID进行计数(因为每个条目代表一个违规,这等同于计算违规数),然后按playerName分组,以便我们为每个玩家获得总计。这接近您想要做的事吗?
对于复制/粘贴结果表格式不正确,我深表歉意,我不确定如何使它看起来更好。
如果将来添加更多的infractionType,则可能需要这样的代码:SELECT COUNT(id),玩家名称,示例GROUP BY infractionType,playername中的infractionType;
这将产生如下结果:
+-----------+------------+----------------+
| count(id) | playername | infractionType |
+-----------+------------+----------------+
| 3 | Alpha | ET1 |
| 1 | Delta | ET1 |
| 1 | Alpha | ET2 |
| 1 | Delta | ET2 |
| 2 | Echo | ET2 |
+-----------+------------+----------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句