Wygląda na to, że masz dziwnie zorganizowaną tabelę zadań, w wyniku czego będziesz musiał zrobić nieco dziwne rzeczy, aby poprawnie wykonać zapytanie. Zgodnie z opisem wiersz w tabeli zadań zawiera identyfikator studentId, admitId, enquiryId lub enquiryDetailId. Nie jest to optymalny sposób na zrobienie tego ... ale rozumiem, że czasami musisz sobie radzić z tym, co masz.
Tak więc, aby uzyskać nazwy, musisz dołączyć do źródła nazw... i zakładając, że są wszędzie, w powiązanych tabelach, możesz zrobić coś takiego:
select
t.StudentID,t.AdmissionID,t.EnquiryID,t.EnquiryDetailsID,x.FirstName,x.LastName
from Task t inner join Student s on t.StudentId = s.Id
union all
select
t.StudentID,t.AdmissionID,t.EnquiryID,t.EnquiryDetailsID,x.FirstName,x.LastName
from Task t inner join Admission a on t.AdmissionId = a.Id
union all
select
t.StudentID,t.AdmissionID,t.EnquiryID,t.EnquiryDetailsID,x.FirstName,x.LastName
from Task t inner join Enquiry e on t.EnquiryId = e.Id
union all
select
t.StudentID,t.AdmissionID,t.EnquiryID,t.EnquiryDetailsID,x.FirstName,x.LastName
from Task t inner join EnquiryDetail d on t.EnquiryDetailId = d.Id
...albo możesz osiągnąć to samo od środka:
select
t.StudentID,
t.AdmissionID,
t.EnquiryID,
t.EnquiryDetailsID,
x.FirstName,
x.LastName
from
Task t
inner join
(
select 's' source, Id, FirstName, LastName from Student union all
select 'a' source, Id, FirstName, LastName from Admission union all
select 'e' source, Id, FirstName, LastName from Enquiry union all
select 'd' source, Id, FirstName, LastName from EnquiryDetail
) as x
on
( t.StudentId = x.Id and x.source = 's' )
or
( t.AdmissionId = x.Id and x.source = 'a' )
or
( t.EnquiryId = x.Id and x.source = 'e' )
or
( t.EnquiryDetailId = x.Id and x.source = 'd' )
where
t.TaskUser=0 and t.BranchID=1