I have three Student tables, TimeSheet and TimeRecord.
Talbe columns:
Student: StudentId, FirstName, LastName
TimeSheet: TimeSheetId, StudentId, IsActive
- TimeRecord: TimeRecordId, TimeSheetId, BonusHour (int type), CreationDate
Table ratio:
- Student 1: N TimeSheet (FK StudentId)
- TimeSheet 1: N TimeRecord (FK TimeSheetId)
Student data:
StudentId, FirstName, LastName
- 10, Macro, John
- 11, Hiro, Edge
- 12, Sarah, Lemon
TimeSheet Sample Data:
TimeSheetId, StudentId, IsActive
- 187, 10, True
- 196, 11, True
- 195, 12, True
- 199, 10, False
- 200, 12, False
TimeRecord sample data:
TimeRecordId, TimeSheetId, BonusHour, IsValid, CreationDate
- 1, 187, 1, True, 07/17/2010 10:23:25
2, 196, 2, True, 7/19/2010 2:23:25 PM
3, 187, 1, False, 8/1/2010 2: 5: 25 AM
4, 187, 3, True, 8/9/2010 12:23:13 PM
5, 196, 0, True, 7/20/2010 6:15:25 PM
6, 196, 2, True, 09/18/2010 2:23:25 PM
7, 195, 3, False, 08/18/2010 2:23:25
8, 199, 4, False, 7/18/2010 2:23:25 PM
I would like to receive the total bonus of each student, only Active TimeSheet has a valid bonus account, which is considered. So, the result will be something like the following:
For July, etc. for any month
- Hiro Edge has 10 hours in July 2010.
- Sarah Lem has 8 hours in July 2010.
- Macro John has 6 hours in July 2010.
Here is what I have tried so far:
Dim query = From ts In db.TimeSheet _ Join tr In db.TimeRecord On tr.TimeSheetId Equals ts.TimeSheetId _ Group By ts.StudentId, tr.TimeSheetId Into TotalTime = Sum(BonusHour) Select StudentId, TimeSheetId, TotalTime
I still can not get the join of the three tables. So far, I can join only two tables. I need to join the Student table to the query to get the student name.
Many thanks.
Update one
Dim query = From st In db.Student Select New With { .stName = st.FirstName & " " & st.LastName, _ .BonusHours = (From ts In st.TimeSheets Join tr in db.TimeRecord On tr.TimeSheetId Equals ts.TimeSheetId _ Where ts.IsActive = True And tr.IsValid = True _ Group By key = New With {ts.TimeSheetId, .MonthYear = (tr.CreationDate.Value.Month & "/" & tr.CreationDate.Value.Year)} Into BonusHr = Sum(tr.BonusHour)})}
Now the problem is that I can get "MonthYear" from "BournsHours". Because I want this:
etc. for any month.