我有这个表来自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
答案 0 :(得分:1)
你真的不能直接在SQL中这样做。在SQL中,所有列都由查询定义,因此它们对于每一行都是相同的。您要求使用两种不同类型的列。
有一些黑客可以解决这个问题。一种是连接行中的所有值,因此表实际上只是一个字符串表。另一个是将所有其他列清空,并将总重量放在另一列中。
但是,在这种情况下,最好的解决方案是在应用程序层完成工作。循环遍历结果,并根据需要在输出中添加新行。