0

我有这张来自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
4

1 回答 1

1

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

有一些技巧可以解决这个问题。一种方法是将行中的所有值连接起来,因此该表实际上只是一个字符串表。另一种方法是清除所有其他列并将总重量放在一个附加列中。

但是,在这种情况下,最好的解决方案是在应用程序层进行工作。循环遍历结果并将新行添加到您认为合适的输出中。

于 2013-07-30T11:23:14.440 回答