通过以下代码中的第一个查询,我正在寻找在第二场比赛中在柏林进行的检查。
对于第二个查询,我想为每个检查提供分数。
正如您将看到我正在使用函数SUM。但是,假设我有2次检查,每次检查的点数为50.好吧,不用回显100,用这段代码我回显5050
它出了什么问题?
非常感谢
该守则已得到纠正和运作,只是有些人需要这样做。感谢所有
$querya = "SELECT * FROM checkins where gamesid=2 and city='Berlin'";
$resulta = mysql_query($querya) or die(mysql_error());
$sumOfPoints = 0;
while($rowa = mysql_fetch_array($resulta)){
$n = $rowa['venuesid'];
$queryb = "SELECT venuesid, SUM(points) as sumpoints from venues where venuesid='".$n."' GROUP BY venuesid ORDER BY venuesid";
$resultb = mysql_query($queryb) or die(mysql_error());
while($rowb = mysql_fetch_array($resultb)){
$sumOfPoints += $rowb['sumpoints'];
}
}
echo "Total points is $sumOfPoints<br/>";
答案 0 :(得分:1)
点必须是一个字符串,你需要把它投出来
SUM(cast(points) as int)
然后按照Gaurav关于标记计算的观点
答案 1 :(得分:1)
使用SUM(points) AS sum
(仅在使用总和时清晰明了)
检查点是数字字段而不是varchar。
答案 2 :(得分:0)
您收到5050
,因为您的脚本在循环的两次迭代中回显50
。
从它的外观来看,你的第二个查询的GROUP BY
子句不会在venuesid
上进行分组。因此,首先尝试将GROUP BY子句更改为:
GROUP BY venuesid
如果这不能提供您正在寻找的结果,那么您应该尝试使用venuesid
的静态值直接针对数据库运行查询,以查看从中获取的内容,然后可能更新你的问题,我们可以从那里拿走。