sql >> Databasteknik >  >> RDS >> Sqlserver

Fånga flera typer av data i SQL Server

Så - det ser ut som att du har en konstigt organiserad uppgiftstabell, och som ett resultat kommer du att behöva göra lite konstiga saker för att fråga rätt. Enligt din beskrivning innehåller en rad i uppgiftstabellen antingen ett student-ID, ett antagnings-ID, ett enquiryId eller ett enquiryDetailId. Det här är inte ett optimalt sätt att göra det här...men jag förstår att man ibland måste klara sig med det man har.

Så för att få namnen måste du gå med i källan till namnen... och förutsatt att de finns överallt, i relaterade tabeller, kan du göra något som:

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

...eller så kan du åstadkomma samma sak lite ut och in:

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


  1. extrahera siffror från en *varchar*-cell och matte med dem i ren mysql

  2. SQL Server infoga om det inte finns bästa praxis

  3. Python hänger på fetchall med MySQL-kontakt

  4. Hur installerar man MySQL-python på Amazon Web Services EC2-instans?