统计行数

时间:2015-12-22 20:44:25

标签: php mysql sql

我的数据库中有一个名为club的表。在club中有一行名为speler_idspeler_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")

2 个答案:

答案 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”。