vaultLoop: use MAX(running_balance) per user instead of SUM(amount)
This commit is contained in:
+13
-5
@@ -200,14 +200,22 @@ function fetchVaultRecords($user = null) {
|
|||||||
* @return int The total balance of the given user (or all users if no user is given).
|
* @return int The total balance of the given user (or all users if no user is given).
|
||||||
*/
|
*/
|
||||||
function vaultLoop ($name=null) {
|
function vaultLoop ($name=null) {
|
||||||
$vault = fetchVaultRecords($name);
|
$pdo = getDatabaseConnection();
|
||||||
$balance = 0;
|
|
||||||
|
|
||||||
foreach ($vault as $entry) {
|
if ($name === null) {
|
||||||
$balance += $entry['amount'];
|
$stmt = $pdo->query(
|
||||||
|
'SELECT COALESCE(SUM(max_balance), 0) FROM '
|
||||||
|
. '(SELECT MAX(running_balance) AS max_balance FROM vault GROUP BY user)'
|
||||||
|
);
|
||||||
|
|
||||||
|
return (int)$stmt->fetchColumn();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $balance;
|
$stmt = $pdo->prepare('SELECT MAX(running_balance) FROM vault WHERE user = :user');
|
||||||
|
$stmt->bindValue(':user', $name);
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
return (int)$stmt->fetchColumn();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user