您好我正在尝试制作一款小游戏,我需要为饮料的外观和味道添加一些观点。
将有7个人提供积分,所以在php中我需要为每个日期创建一个表,并且每个玩家只显示1个名称,但我需要为每个具有相同名称的行添加点数:
这是我到目前为止所拥有的。
<?php
$pdo = Logbase::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT DISTINCT start FROM grade';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);?>
<?php while ($r = $q->fetch()): ?>
<table class="blueTable" align="center">
<thead>
<tr>
<th> <?php echo $r['start'] ?></th>
<th></th>
</tr>
</thead>
<?php endwhile; ?>
<tbody>
<?php
$pdo = Logbase::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM grade group by start, name';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
?>
<?php while ($r = $q->fetch()): ?>
<tr>
<td> <?php echo $r['name'] ?></td>
<td> <?php echo $r['drinks_fla'] + $r['drinks_view'] + $r['food'] +
$r['sam'] ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
在我的结果中我可以看到每个玩家的1个名字,但是只添加了1行(第一个),所以我问我需要一个循环或者我的mysql中的东西?
丹尼斯-------- 10分我想看 丹尼斯24分 Michale 12分
1 --- 31.07-2017 ---丹尼斯--- 5 --- 5
1 --- --- 31.07-2017丹尼斯--- 4 --- 3
1 --- --- 31.07-2017丹尼斯--- --- 5 2
2 --- --- 31.07-2017 --- Michale 5个--- 1个
2 --- --- 31.07-2017迈克尔--- 2 --- 4
答案 0 :(得分:0)
$sql = 'SELECT * FROM grade group by start, name';
您已将结果与MySQL分组,因此只会为该组的属性调用一行。
尝试&#34; sum()&#34;获取所需列的总和:
$sql = 'SELECT name as name,sum(sum(drinks_fla),sum(drinks_view)) as sum FROM grade group by start, name';
MySQL将调用由第一个Property命令的所有行。所有具有相同第一个属性的行都使用第二个属性进行排序。
示例:
id---start--- name-----drinks_fla---drinks_view
1---31.07-2017---dennis---5---5
1---31.07-2017---dennis---4---3
1---31.07-2017---dennis---5---2
2---31.07-2017---Michale---5---1
2---31.07-2017---Michael---2---4
Result:
name----sum
dennis----24
Michale----6
Michael----6