Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Уловете множество типове данни в SQL Server

И така - изглежда, че имате странно организирана таблица със задачи и в резултат на това ще трябва да правите леко странни неща, за да правите заявки правилно. Според вашето описание ред в таблицата със задачи съдържа или 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Предотвратяване на кеширане в SQL Server

  2. Как да направите редактируема заявка за преминаване / преминаване?

  3. Как да деактивирате ограничение на външния ключ в SQL Server (примери за T-SQL)

  4. SSRS отчет форматира таблица за показване на данни един до друг

  5. Върнатият тип данни варира в зависимост от данните в таблицата