0

次のような大きなMySQLテーブルがあります。

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)

各job_numberのtime_onフィールドとtime_offフィールドの違いを見つけて、$total_time列にエコーしたいと思います。
同じjob_number(111、444)の行が複数ある場合は、その行のtime_onとtime_offの違いを見つけられるようにするだけでなく、これらの値を合計したいと思います。次のように、それぞれの一意のジョブ番号の行が1つだけで、合計時間が次のようになっていることを確認したいと思います。

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を使用したいと思います。どんな助けでも大歓迎です。ありがとうございました

4

1 に答える 1

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でそれを参照してください。

于 2012-10-02T12:58:30.363 に答える