我有两个功能,我想让它像一个。
功能1
public function getAlliancesList($pageIndex, $pageSize)
{
return $this->provider->fetchResultSet("SELECT a.id, a.name, a.player_count, a.rating FROM p_alliances a ORDER BY a.rating DESC, a.player_count DESC, a.id ASC LIMIT %s,%s", array($pageIndex * $pageSize, $pageSize));
}
功能2
public function getAllianceAverage($allianceId)
{
$row = $this->provider->fetchRow("SELECT AVG(p.total_people_count) as average FROM p_players p WHERE p.alliance_id = '%s'", array($allianceId));
return intval($row['average']);
}
基本上我想将函数2加入到函数1中,所以我不需要2个查询,然后我可以在模板文件上调用那个函数,如$this->datalist->row['average']
,如果可能的话。
我已经尝试了很多方法让两个查询一起工作,但无济于事,所以任何帮助都会很棒。
编辑:
我想要的是在getAllianceList
函数
这是我们到现在为止的尝试:
public function getAlliancesList($pageIndex, $pageSize)
{
return $this->provider->fetchResultSet("SELECT *
FROM `p_alliances`
JOIN `p_players`
ON `p_players`.`id` = `p_alliances`.`id` LIMIT %s,%s", array($pageIndex * $pageSize, $pageSize));
}
答案 0 :(得分:2)
SELECT
a.id,
a.name,
a.player_count,
a.rating,
AVG(p.total_people_count) AS `average`
FROM p_alliances a
INNER JOIN p_players p ON (p.alliance_id = a.id)
GROUP BY a.id
ORDER BY a.rating DESC, a.player_count DESC, a.id ASC
LIMIT %s,%s
如果可能有0个玩家,您可能希望将INNER JOIN
更改为LEFT JOIN
,但这可能会影响mysql的性能。