2012-10-02 45 views
0

一起添加錶行的結果我有一個大的MySQL表看起來像這樣:集團MySQL查詢結果在PHP中生成的表,並用相同的ID

job_number  time_on  time_off 
111    18:50:10  18:51:18 
222    18:13:09  19:33:42 
111    07:12:04  08:30:20 
333    10:34:03  12:53:10 
444    14:54:25  12:11:04 
444    10:31:48  16:34:53 
111    17:21:41  20:21:41 
(type: Varchar) (type: time) (type: time) 

我想找到time_on和time_off之間的區別每個job_number的字段並在$ total_time列中回顯它們。
如果有多行具有相同的job_number(111,444),我希望能夠找到該行的time_on和time_off之間的差異,但也將這些值加在一起。 我想,以確保只有一個行中的每個不同的任務編號與合併時間,像這樣:

Job Total Time // ($total_time = $time_off - $time_on) 
111 04:19:34 // ((18:51:18 - 18:50:10) + (08:30:20 - 07:12:04) + (20:21:41 - 17:21:41)) 
222 01:20:33 // (19:33:42 - 18:13:09) 
333 02:19:07 // (12:53:10 - 10:34:03) 
444 08:46:26 // ((16:34:53 - 10:31:48) + (14:54:25 - 12:11:04)) 

結果將在一個簡單的表進行格式化,像這樣:

<table> 
    <tr> 
     <th>Job</th> 
     <th>Total Time</th> 
    </tr> 
    <tr> 
     <td>111</th> 
     <td>04:19:34</th> 
    </tr> 
    <tr> 
     <td>222</th> 
     <td>01:20:33</th> 
    </tr> 
    ... 
</table> 

我將如何去做這件事? 我寧願使用PHP來實現這一點。任何幫助將不勝感激。三江源

+0

你能否在OP中指定哪些工作ID的不同時間?它會給幫助你的人提供很多信息。 – h2ooooooo

+0

請注意,用於構建您的示例輸出的時間與示例數據中給出的時間不同(這就是爲什麼我的查詢的結果與以上不同)。 – eggyal

+0

我已經嘗試了一段時間的循環,但不明白它有足夠的成功。 在while循環中,我使用了這個: //循環每一行while循環 $ table [$ row ['job_number']] [] = $ row ['time_on']; $ table [$ row ['job_number']] [] = $ row ['time_off']; ,並能夠創建一個數組與所有nessassary領域,但不知道該怎麼做。 我寧願使用PHP來實現這一點。 – user1330681

回答

3

你能做到這一點的SQL:

SELECT job_number, 
     SEC_TO_TIME(SUM(TIME_TO_SEC(time_off) - TIME_TO_SEC(time_on))) 
FROM  my_table 
GROUP BY job_number 

看到它的sqlfiddle

+0

非常感謝您的幫助。如果我無法解決如何使用PHP來實現這個功能,我會使用它。我這樣說是因爲我已經從數據庫中選擇這些字段和其他字段以供在頁面上的其他地方使用,因此選擇它們兩次似乎不太合適。另外,謝謝你指出我的兩個例子不同,我現在會修復它們 – user1330681

相關問題