Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bắt nhiều loại dữ liệu trong SQL Server

Vì vậy - có vẻ như bạn có một bảng nhiệm vụ được tổ chức kỳ lạ, và kết quả là, bạn sẽ phải làm những việc hơi kỳ lạ để truy vấn đúng. Theo mô tả của bạn, một hàng trong bảng nhiệm vụ chứa một studentId, một entryId, một enquiryId hoặc một enquiryDetailId. Đây không phải là cách tối ưu để làm điều này ... nhưng tôi hiểu rằng đôi khi bạn phải cố gắng bằng những gì bạn có.

Vì vậy, để lấy tên, bạn phải kết hợp với nguồn của tên ... và giả sử chúng ở khắp nơi, trong các bảng liên quan, bạn có thể làm điều gì đó như:

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

... hoặc, bạn có thể thực hiện điều tương tự từ trong ra ngoài:

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. Tham số IN và OUT trong SQL Server là gì

  2. Có Rủi ro Bảo mật Liên quan đến Giám sát Đám mây Spotlight không?

  3. Kết quả Truy vấn Email dưới dạng Bảng HTML trong SQL Server (T-SQL)

  4. Cách hàm CHARINDEX () hoạt động trong SQL Server (T-SQL)

  5. Làm cách nào để tôi có thể lặp lại một tập bản ghi trong một thủ tục được lưu trữ?