У меня три таблицы
Tasks
с колонками Taskid, Taskname
TaskAllocations
с колонками Taskid, EmpNum
TaskEntries
с колонками TaskId, EmpNum, WorkedDate, Hoursspent
Теперь я хочу получить все записи о заданиях за определенную неделю. Здесь моя проблема в том, что даже если для какой-либо задачи нет Taskentry, я должен получить по крайней мере строку с этим TaskId и именем задачи с Hoursspent как Null в наборе результатов запроса. Я пытался получить это с помощью запроса ниже.
SELECT A.TaskId,
B.TaskName,
SUM( C.HoursSpent ) as TotalHours ,
C.WorkedDate, C.Comments
FROM TaskAllocations A
LEFT OUTER JOIN TaskEntries C
ON A.TaskId = C.TaskId
AND A.EmpNum = C.EmpNum
INNER JOIN Tasks B
ON A.TaskId = B.TaskId
WHERE A.EmpNum =123456
AND C.WorkedDate
IN ('2010-01-17','2010-01-18','2010-01-19',
'2010-01-20','2010-01-21','2010-01-22','2010-01-23' )
GROUP BY A.TaskId, C.WorkedDate
ORDER BY A.TaskId,C.WorkedDate ASC ';
То, что я получаю для этого фрагмента SQL, - это если и только если есть запись для определенного идентификатора задачи, то только я получаю строку для этого. но я хочу получить по крайней мере по одной строке для каждой задачи, которая доступна для EmpNum. Даже если я получу одну строку для каждой комбинации TaskId и WorkedDate, никаких проблем. Пожалуйста, помогите мне с этим. Фактическое намерение этого состоит в том, чтобы создать двухмерную таблицу HTML с каждой записью задачи по дате и задаче, как показано ниже.
---------------------------------------------------------
TaskId TaskName Sun Mon Tue Wed Thu Fri Sat
---------------------------------------------------------
18 name1 2 3 4:30 3:30
19 name2
20 name3 4 2:30
22 name4 2:30
23 name5
24 name6 1:30 6
---------------------------------------------------------
Так что это может быть обновлено пользователем для каждой годовой недели. Сначала я подумал о group_concat , но из-за производительности я использую обычную группу по запросу.
Примечание: для определенного идентификатора задачи и рабочей даты будет только одна запись в часах.
Я почти построил интерфейс. Пожалуйста, помогите мне получить все идентификаторы задач, как указано выше, даже если нет записи. Нужно ли использовать подзапрос.