我正在制作一个高尔夫排行榜,其中我从特定的比赛中获取所有得分并由用户标识组合。这部分工作正常。
我这样做:
$playersArray = array();
$sql = "SELECT *, SUM(point) AS points, COUNT(*) AS holes, COUNT(*)*2-SUM(point) AS topar FROM fb_score WHERE matchid=$matchid GROUP BY userid";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()){
$playersArray[] = $row;
}
}
现在,我的问题是,有没有一种方法可以为每个用户创建一个包含所有“点”的数组并将其放入$ row中?
让我们说SUM(点)总结为3个点(3,5,4)。我可以在结果中得到这个。因为现在我只为每个用户获得最新的$行,但添加了“points”,“holes”和“topar”。
希望这个问题有道理: - /
任何帮助都表示赞赏,并提前感谢: - )
答案 0 :(得分:1)
可能有点hacky但它确实有效。只需GROUP_CONCAT这些值,你就可以在你的$ row var中得到它们,你就可以在一个数组中爆炸它们。
select *, GROUP_CONCAT(CONVERT(point,CHAR)) as all_points from fb_score GROUP BY userid