在GROUP BY中创建数组

时间:2017-03-22 11:47:30

标签: php arrays mysqli

我正在制作一个高尔夫排行榜,其中我从特定的比赛中获取所有得分并由用户标识组合。这部分工作正常。

我这样做:

$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”。

希望这个问题有道理: - /

任何帮助都表示赞赏,并提前感谢: - )

1 个答案:

答案 0 :(得分:1)

可能有点hacky但它​​确实有效。只需GROUP_CONCAT这些值,你就可以在你的$ row var中得到它们,你就可以在一个数组中爆炸它们。

select *, GROUP_CONCAT(CONVERT(point,CHAR)) as all_points from fb_score GROUP BY userid