तो - ऐसा लगता है कि आपके पास एक अजीब तरह से व्यवस्थित कार्य तालिका है, और परिणामस्वरूप, आपको सही क्वेरी करने के लिए हल्के से अजीब चीजें करनी होंगी। आपके विवरण के अनुसार, कार्य तालिका में एक पंक्ति में एक छात्र आईडी, एक प्रवेश आईडी, एक पूछताछ आईडी, या एक पूछताछ विवरण आईडी शामिल है। ऐसा करने का यह सबसे अच्छा तरीका नहीं है...लेकिन मैं समझता हूं कि कभी-कभी आपको अपने पास जो कुछ भी होता है उसके साथ काम करना पड़ता है।
इसलिए, नाम प्राप्त करने के लिए, आपको नामों के स्रोत से जुड़ना होगा... और यह मानते हुए कि वे सभी जगह हैं, संबंधित तालिकाओं में, आप कुछ ऐसा कर सकते हैं:
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