sql >> Databáze >  >> RDS >> Sqlserver

Zachyťte více typů dat na serveru SQL Server

Takže - vypadá to, že máte podivně uspořádanou tabulku úkolů a v důsledku toho budete muset dělat mírně podivné věci, abyste se dotazovali správně. Podle vašeho popisu obsahuje řádek v tabulce úkolů buď studentId, vstupníId, enquiryId nebo enquiryDetailId. Toto není optimální způsob, jak toho dosáhnout...ale chápu, že někdy si musíte vystačit s tím, co máte.

Takže, abyste získali jména, musíte se připojit ke zdroji jmen...a za předpokladu, že jsou všude, v souvisejících tabulkách, můžete udělat něco jako:

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

...nebo můžete udělat totéž tak trochu zevnitř:

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. Uložená procedura MySQL, která přijímá řetězec s více parametry

  2. Zjistit chybu sqlplus v dávkovém skriptu DOS?

  3. MySQL Event If Příkaz END IF Error

  4. Node.js/MySQL:Tisk skutečného dotazu v protokolu chyb v Node.js