所以 - 它看起来像你有一个奇怪的组织任务表,并作为一个结果,你将不得不做轻度奇怪的事情来查询权。根据您的描述,任务表中的一行包含studentId,admissionId,enquiryId或enquiryDetailId。这不是一个最佳的方法来做到这一点...但我明白,有时你必须与你有什么。
因此,得到的名字,你必须加入到名字的来源...,并假设他们是所有的地方,相关表中,你可以这样做:
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
...或者,您可以完成同样的事情有点内外:
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
SQL没有循环。加入JOIN,或许是LEFT JOIN。 – jarlh
他们是一个页面加载(经典ASP),由于循环。 – jai
你试图在这里完成。请给我们一些样品数据 – Munavvar