所以 - 它看起來像你有一個奇怪的組織任務表,並作爲一個結果,你將不得不做輕度奇怪的事情來查詢權。根據您的描述,任務表中的一行包含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