Предложения в C # или VB.NET приветствуются.
Таблица отношений:
- Ученик 1: N TimeSheet (FK StudentId)
Расписание 1: N TimeRecord (FK TimeSheetId)
Dim query = From s In db.Students _
Let pair = (From ts In db.TimeSheets _
Join tr In db.TimeRecords On tr.TimeSheetId Equals ts.TimeSheetId _
Where ts.IsArchive = False And ts.IsCompleted = False _
Group By key = New With {ts.TimeSheetId, ts.StudentId} Into TotalHour = Sum(tr.BonusHour)) _
From part In pair _
Where part.key.StudentId = s.StudentId _
Select New With {.StudentId = s.StudentId, .AssignedId = s.AssignedId,.TotalTime = part.TotalHour}
Вот результат запроса:
- 734 - 159: 9 часов 35 мм 28 секунд
- 2655 - 160: 93 часа 33 мм 50 секунд
- 1566 - 161: 37 ч. 23 мм. 53 с.
- 3114 - 162: 25 часов 0 мм 21 с
Требуется результат запроса:
- 733 - 158: 0 ч. 0 мм 0 с
- 734 - 159: 9 часов 35 мм 28 секунд
- 736 - 169: 0 часов 0 мм 0 секунд
- 2655 - 160: 93 часа 33 мм 50 секунд
- 1566 - 161: 37 ч. 23 мм. 53 с.
- 3114 - 162: 25 часов 0 мм 21 с
- 2165 - 189: 0 ч. 0 мм. 21 с.
Есть некоторые TimeSheet, у которых нет TimeRecord, которые я также должен выбрать. Как я могу выбрать все из них, чтобы сделать выбор, как указано выше желаемого результата? Я думаю о том, как я могу включить некоторые условия
проверка в запросе, чтобы увидеть, если TimeSheet не имеет TimeRecord, то нет необходимости суммировать (tr.BonusHour), просто присвойте TotalHour ноль. Я не знаю, что это правильный путь.
Любое предложение приветствуется.