我的数据库中有一个名为club
的表。在club
中有一行名为speler_id
,speler_id
我可以获得speler_id
的值。我想将值一起计算(因为用户有多个speler_id
)这就是代码:
$punten = 0;
$sql2 = "SELECT * FROM `club` WHERE `user_id`=" . $userid ." ";
$result2 = mysql_query($sql2) or die('Query failed: ' . mysql_error());
while( $row2 = mysql_fetch_assoc( $result2)) {
$sql = "SELECT * FROM `players_db` WHERE `id`=" . $row2['speler_id'] . " ";
$result = mysql_query($sql) or die('Query failed: ' . mysql_error());
$row = mysql_fetch_assoc( $result);
$punten += $row['xb_end_range'];
echo $punten;
}
但是当我执行此操作时,它会为我提供所有值而不是总值。
很抱歉,使用mySQL会很快将其更新为PDO或mySQLi。
EDIT 我找到了答案:
$sql = "SELECT SUM(xb_end_range) AS punten
FROM club AS c
JOIN players_db AS p ON c.speler_id = p.id
WHERE c.user_id = $userid";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$punten = $row['punten'];
echo number_format("$punten")
答案 0 :(得分:5)
通常,尽量避免在循环内进行查询。相反,加入表格。
$sql = "SELECT SUM(xb_end_range) AS punten
FROM club AS c
JOIN players_db AS p ON c.speler_id = p.id
WHERE c.user_id = $userid";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$punten = $row['punten'];
echo $punten;
答案 1 :(得分:0)
首先,您手动将club
表连接到players_db
表,但是在代码和运行时,让数据库执行它会更有效率为了你。第二,您正在执行手动聚合(或尝试执行),数据库也可以更有效地执行聚合。总的来说,看起来你想要执行这样的查询:
select ifnull(sum(p.xb_end_range), 0) as punten
from
club c
join players_db p on p.id = c.speler_id
where c.user_id = 'the-user-id'
这将返回恰好一行,我所采用的是所需的总和,如唯一列的值,“punten”。