2015-11-12 43 views
0

我有一個簡單的查詢,列出了員工姓名,他們工作的小時數/分鐘數以及這些小時數的成本。這是查詢,它加入了3個表格:在While循環中的組結果和計數值

$usersResult = mysqli_query($con,"SELECT a.UF_TIME_ID, a.UF_USER, a.UF_COST, 
b.ID, b.NAME, b.LAST_NAME, c.ID, c.MINUTES, c.TASK_ID FROM time_cost a INNER 
JOIN b_user b ON a.UF_USER = b.ID INNER JOIN b_tasks_elapsed_time c ON 
a.UF_TIME_ID = c.ID GROUP BY a.UF_USER"); 
while($row = mysqli_fetch_array($usersResult) 

分鐘字段只是讀取120分鐘數。然後我有一個函數將其分解成幾個小時和幾分鐘。從這個循環中,我得到一個表,看起來像:

NAME   | Time Spent | Cost 
Bob   | 2h 30m  | 50 
Bob   | 2h 15m  | 40 
Dave   | 3h 30m  | 120 
Bob   | 1h 15m  | 20 
Dave   | 4h 30m  | 180 

現在我想他們,我試圖GROUP BY a.UF_USER組,但它不會添加的時間或正確費用高達我可以理解。然後我嘗試過:

SUM(c.MINUTES) AS TOTAL 

並且使用那個有和沒有GROUP但是也沒有正確地增加值。我也嘗試過:

$totalTime += $row['MINUTES']; 

但是與分組不同,它不顯示。這裏是我有while循環後的代碼:

{ 
    $userFirstName = $row['NAME']; 
    $userLastName = $row['LAST_NAME']; 
    $userCost = $row['UF_COST']; 
    $userMinutes = $row['MINUTES']; 


    $userTime = $userMinutes; 
    $userTime = convertFromMinutes($userTime); 


    $totaluserHours = $userTime['hours']; 
    $totaluserMinutes = $userTime['minutes']; 

    print "<tr><td>$userFirstName $userLastName</td><td>$totaluserHours H $totaluserMinutes M</td><td>$userCost</td></tr>"; 
    } 

我有一個功能,計算分鐘和拆分成小時和分鐘。所以我需要最終的結果基本閱讀:

NAME   | Time Spent | Cost 
Bob   | 6h 00m  | 110 
Dave   | 8h 00m  | 300 

您的幫助將不勝感激。我相信這很簡單,我錯過了這裏的觀點。

+0

您應說明是在小時和分鐘字段(能給我們一些樣本數據),然後爲我們提供了預期的輸出以及您在嘗試各種解決方案時獲得的輸出。 – Shadow

+0

使用http://sqlfiddle.com/給我們樣品。 – DevT

回答

1

爲獲得部份添加您需要一筆

嘗試這種方式

$usersResult = mysqli_query($con,"SELECT a.UF_TIME_ID, a.UF_USER, sum(a.UF_COST), 
b.ID, b.NAME, b.LAST_NAME, c.ID, sum(c.MINUTES), c.TASK_ID FROM time_cost a INNER 
JOIN b_user b ON a.UF_USER = b.ID INNER JOIN b_tasks_elapsed_time c ON 
a.UF_TIME_ID = c.ID GROUP BY a.UF_USER"); 
+0

哇,我沒有使用兩者的總和,所以它沒有添加一個而排除另一個。我知道這是我錯過的簡單解決方案。 – andy