[英]Combining 2 queries into one
我有以下两个查询:
$sql = "SELECT SUM(points) as userpoints FROM ".$prefix."_publicpoints
WHERE date BETWEEN ? AND ? AND fk_player_id = ?";
// Getting the users points into a variable to use in the next query
$userPoints;
$getuserplacement = "SELECT fk_player_id FROM ".$prefix."_publicpoints
WHERE date BETWEEN ? AND ?
GROUP BY fk_player_id
HAVING SUM(points) > $userPoints";
// After this I count the rows I get and put that into a variable and thats the users Rank
$userRank = $stmt->num_rows + 1;
这给了我这些数字:点数:-178位置:1891
然后,我尝试了Ivan的示例:
$sql= "SELECT fk_player_id FROM ".$prefix."_publicpoints
WHERE date BETWEEN ? AND ?
GROUP BY fk_player_id
HAVING SUM(points) > (
SELECT SUM(points) as userpoints FROM ".$prefix."_publicpoints
WHERE date BETWEEN ? AND ? AND fk_player_id = ?
)";
if($stmt->prepare($sql)){
$stmt->bind_param('ssssi',$yearFrom,$yearTo,$yearFrom,$yearTo,$playerid);
$stmt->execute();
$stmt->store_result();
$userMrank = $stmt->num_rows;
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
$stmt->bind_result($userPoints);
$stmt->fetch();
}
这给了我这些数字:点:3位置:0
是否可以将这两个查询合并为一个?
希望获得帮助:-)
我不知道我是否了解您,但是,您想要这个吗?
$sql= "SELECT fk_player_id FROM ".$prefix."_publicpoints
WHERE date BETWEEN '$year-01-01' AND '$year-12-31'
GROUP BY fk_player_id
HAVING SUM(points) > (
SELECT SUM(points) as userpoints FROM ".$prefix."_publicpoints
WHERE date BETWEEN ? AND ? AND fk_player_id = ?
)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.