Php 如何对msql表中的不同值执行摘要
这个表来自mysql,我使用以下代码输出Php 如何对msql表中的不同值执行摘要,php,mysql,database,Php,Mysql,Database,这个表来自mysql,我使用以下代码输出 <?php $sql="SELECT * FROM $tbl_name WHERE subunit='$subunit' and part='$part' and session='$session' and class ='$class' order by names asc"; $result=mysql_query($sql); while($data = mysql_fetch_row($result)){ echo strtoup
<?php
$sql="SELECT * FROM $tbl_name WHERE subunit='$subunit' and part='$part' and session='$session' and class ='$class' order by names asc";
$result=mysql_query($sql);
while($data = mysql_fetch_row($result)){
echo strtoupper("<tr><td>$data[0]</td><td>$data[1]</td><td>$data[2]</td><td>$data[3]</td><td>$data[4]</td><td>$data[5]</td><td>$data[6]</td><td>$data[7]</td></tr>");
}
?>
NAMES ID COURSES LETTER WEIGHT UNIT SUBUNIT SESSION PART CLASS
john 2012/185301 GSP111 F 0 ARTIST UNN 2012/2013 FIRST 100
john 2012/185301 HIS121 D 4 ARTIST UNN 2012/2013 FIRST 100
john 2012/185301 PHL101 D 4 ARTIST UNN 2012/2013 FIRST 100
jude 2011/176363 TRM201 C 6 ARTIST UNE 2012/2013 FIRST 200
jude 2011/176363 ACH211 D 4 ARTIST UNE 2012/2013 FIRST 200
mary 2011/176363 ACH231 B 12 ARTIST UNE 2012/2013 FIRST 200
您确实不能直接在SQL中执行此操作。在SQL中,所有的列都是由查询定义的,因此它们对于每一行都是相同的。您需要两种不同类型的列 有一些黑客可以解决这个问题。一种方法是将行中的所有值连接起来,使表实际上只是一个字符串表。另一种方法是将所有其他列清空,并将总重量放在另一列中
但是,在这种情况下,最好的解决方案是在应用程序层进行工作。循环浏览结果,并在您认为合适的情况下向输出中添加新行。实现这一点最明智的方法是使用多个查询,因为数据本身不再是表格形式(尽管使用HTML表格和
colspan
仍然可以很容易地实现您想要的效果)-您可以使用选择名称、总和(重量)从中轻松获得相应的总数。。。按名称分组
,但需要在PHP中进行额外的逻辑处理才能将其转换为所需的显示格式。
NAMES ID COURSES LETTER WEIGHT UNIT SUBUNIT SESSION PART CLASS
john 2012/185301 GSP111 F 0 ARTIST UNN 2012/2013 FIRST 100
john 2012/185301 HIS121 D 4 ARTIST UNN 2012/2013 FIRST 100
john 2012/185301 PHL101 D 4 ARTIST UNN 2012/2013 FIRST 100
total weight = 8
jude 2011/176363 TRM201 C 6 ARTIST UNE 2012/2013 FIRST 200
jude 2011/176363 ACH211 D 4 ARTIST UNE 2012/2013 FIRST 200
total weight = 10 ARTIST UNE 2012/2013 FIRST 200
mary 2011/176363 ACH231 B 12
total weight = 12