[英]Multiple select statement in stored procedure
我有一個存儲過程必須從多個表中檢索數據
就像是
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]
我的問題是還有其他更有效的方法嗎? 還是這是正確的方法?
我正在使用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]
CREATE PROCEDURE up_getData
select personId,
name,
surname,
street address,
Postcode,
FROM Persons p
JOIN Address a on a.PersonId = p.personId
是的,您應該使用聯接:
SELECT a.[AppointmentId]
,a.[ContactId]
,a.[Date]
,a.[BookedBy]
,a.[Details]
,a.[Status]
,a.[Time]
,a.[Type]
,a.[JobId]
,a.[AppointmentFor]
,p.PersonFirstName
,p.PersonLastName
,p2.PersonFirstName
,p2.PersonLastName
FROM Appointments a
JOIN Person p ON a.AppointmentFor = p.Person_Id
JOIN Person p2 ON a.ContactId = p2.Person_Id
SELECT [AppointmentId]
,[ContactId]
,[Date]
,[BookedBy]
,[Details]
,[Status]
,[Time]
,[Type]
,[JobId]
,[AppointmentFor]
,b.PersonFirstName UserFirstName
,b.PersonLasName UserLastName
,c.PersonFirstName ContactFirstName
,c.PersonLastName ContactLastName
FROM [dbo].[Appointments] a
JOIN Person b on a.ApointmentFor = b.Person_Id
JOIN Person c on a.ContactId = c.ContactId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.