如何在sql表中为不同的值执行摘要

时间:2013-07-30 11:09:25

标签: 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 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

请问如何在每个不同的行结束后立即将重量放在下表中?

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

1 个答案:

答案 0 :(得分:1)

你真的不能直接在SQL中这样做。在SQL中,所有列都由查询定义,因此它们对于每一行都是相同的。您要求使用两种不同类型的列。

有一些黑客可以解决这个问题。一种是连接行中的所有值,因此表实际上只是一个字符串表。另一个是将所有其他列清空,并将总重量放在另一列中。

但是,在这种情况下,最好的解决方案是在应用程序层完成工作。循环遍历结果,并根据需要在输出中添加新行。