【发布时间】:2014-04-04 15:31:32
【问题描述】:
我目前正在尝试从我的表中获取数据(在一个超过 300 次击杀数的表中,大多数武器击杀数)。最初我做了一个正常的查询
$q = $mysql->query("SELECT * FROM `kills`") or die($mysql->error);
但是当我尝试
$query2 = $mysql->query("SELECT `killerID`, COUNT(`killerID`) AS tot_kills FROM `kills` WHERE `killText` LIKE '%$gun%' GROUP BY `killerID` ORDER BY `tot_kills` DESC;") or die($mysql->error);
$kData = $query2->fetch_assoc();
$query3 = $mysql->query("SELECT `Username` FROM `players` WHERE `ID` = '" . $kData['killerID'] . "'") or die($mysql->error);
$uData = $query3->fetch_assoc();
$array[$gun]['Kills']++;
$array[$gun]['Gun'] = $gun;
$array[$gun]['BestKiller'] = $uData['Username'];
$array[$gun]['killAmount'] = $kData['tot_kills'];
function sortByKills($a, $b) {
return $b['Kills'] - $a['Kills'];
}
usort($array, 'sortByKills');
foreach($array as $i => $value)
{
// table here
}
我不得不在一个 while 循环中进行,这导致大约有 600 个查询,这显然是不可接受的。您对我如何优化这个,甚至把它变成一个查询有什么建议吗?
我听说 JOIN 很适合这个,但我对此不太了解,想知道你们是否可以帮助我
【问题讨论】:
标签: php mysql sql sorting query-optimization