2012-11-19 118 views
2

我試圖創建一個查詢,該查詢給出了每個任務每個小時花費的日誌。SQL創建日誌

我有以下表格:

與列
  • 日誌表:的TaskID,是PersonID,小時
  • 與列
  • 成員表:ID,名稱,電子郵件,Skype公司,說明

最終日誌看起來應該是這樣的:

| Person1 | Task1 | x hours | 
| Person1 | Task2 | x hours | 
| Person2 | Task1 | x hours | 

所以它必須分組由人和任務。

這是給我麻煩的總小時數。

到目前爲止,這是我:

SELECT m.Name, t.Task, Sum(l.Hours) AS TotalHours 
FROM Member AS m, Log AS l, Tasks AS t 
WHERE t.TaskID=l.TaskID 
GROUP BY t.Task, m.Name; 

然而,這給了我獨一無二的人任務的組合列表,但隨着時間的總量花在這個任務,而不是小時總量每人花費在這項任務上。

希望我已經解釋清楚了這個問題,以便你能幫助我。

許多在此先感謝。

回答

3

您可以在where條款中包含您的Member table

所以,如果你的Log table還包括MemberId您的SQL查詢將是: -

Select m.Name, t.Task, Sum(l.Hours) As TotalHours 
From Member AS m, Log AS l, Tasks AS t 
WHERE t.TaskID=l.TaskID and m.MemberId=l.MemberId 
GROUP BY t.Task, m.Name 

這應該給了你所需要的結果。

編輯:

如果你確實想比隱式的連接,然後查詢使用顯式,而將改爲類似如下: -

Select m.Name, t.Task, Sum(l.Hours) As TotalHours 
From Log AS l 
Inner join tasks AS t 
On t.TaskID=l.TaskID 
Inner join Member AS m 
On m.MemberId=l.MemberId 
GROUP BY t.Task, m.Name 

我一般用明確連接作爲我的查詢是相當大,我發現明確的連接更容易閱讀。至於效率和其他因素,我不確定。

+0

啊!非常感謝。 – Berry

+1

使用顯式而不是隱式聯接幾乎總是更好,尤其是在MS Access中。 – Fionnuala

1

您還需要返回到您的會員表。在您發佈的示例中,您只能加入日誌和任務表。

如果您提供了一些關於會員表格內容的更多信息,我很樂意提供幫助。

+0

我的成員表如下: 會員(ID,姓名,電子郵件,Skype和注意事項)當然 – Berry