我有一个存储过程,必须从多个表中检索数据
就像是
SELECT [AppointmentId]
,[ContactId]
,[Date]
,[BookedBy]
,[Details]
,[Status]
,[Time]
,[Type]
,[JobId]
,[AppointmentFor]
,(Select PersonFirstName from Person where Person_Id = [AppointmentFor]) As UserFirstName
,(Select PersonLastName from Person where Person_Id = [AppointmentFor]) As UserLastName
,(Select PersonFirstName from Person where Person_Id = [ContactId]) As ContactFirstName
,(Select PersonLastName from Person where Person_Id = [ContactId]) As ContactLastName
FROM [dbo].[Appointments]
Run Code Online (Sandbox Code Playgroud)
我的问题是还有其他更有效的方法吗?或者这是正确的方法吗?
我正在使用Sql server 2008谢谢
如果我理解正确,您将需要使用两个连接,以便您可以匹配[AppointmentFor]和[ContactId].
我也把桌子别名,这是一个很好的习惯,当连接到多个桌子时进入.
SELECT a.[AppointmentId]
,a.[ContactId]
,a.[Date]
,a.[BookedBy]
,a.[Details]
,a.[Status]
,a.[Time]
,a.[Type]
,a.[JobId]
,a.[AppointmentFor]
,p1.PersonFirstName As UserFirstName
,p1.PersonLastName As UserLastName
,p2.PersonFirstName As ContactFirstName
,p2.PersonLastName As ContactLastName
FROM [dbo].[Appointments] a
INNER JOIN Person p1 ON p1.Person_Id = a.[AppointmentFor]
INNER JOIN Person p2 ON p2.Person_Id = a.[ContactId]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |