2013-07-30 18 views
0

我有此表使用以下代碼I輸出的MySQL到來,怎樣在mSQL的表執行摘要不同值

<?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 

PLS如何使它爲下表與outut在每一個不同行結束後立即會有重量?

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

最明智的方式實現這一目標將使用一個以上的查詢,因爲數據本身不再表格(儘管你希望仍然可以用HTML表格和'colspan'很容易達到的效果) - 你可以很容易地使用'SELECT姓名,SUM(重量)FROM ... GROUP BY name'得到相應的總數,但它需要在PHP額外的邏輯處理將其轉換成你想要的顯示格式。 – DaveRandom

回答

1

你真的不能直接在SQL中執行此操作。在SQL中,所有列都由查詢定義,因此它們對於每一行都是相同的。您要求提供兩種不同類型的列。

有黑客以解決這個問題。其中之一是來串聯行中的所有值,以便該表是真的只是一個字符串表。另一種方法是清空所有其他列,並將總重量放在附加列中。

然而,在這種情況下,最好的辦法是做這項工作在應用層。如果您認爲合適,循環播放結果並將新行添加到輸出中。