我有這個存儲過程,當我添加連接時,我得不到任何結果。這是因爲用於連接條件的列ForClientID是否爲空?這會影響表格的結果嗎?如果我使用Appointment.ForClientID而不是Client.Name選擇表,則表的其餘部分將加載ForClientID列爲空。在此先感謝,這是一個非常有幫助的社區。如果要連接的列爲空,聯接是否仍然有效?
Create procedure GetAppointmentsByProfessionalName(@ProfessionalName varchar(256))
as
declare @ProfessionalID uniqueidentifier
set @ProfessionalID = (select UserId from aspnet_Users where UserName = @ProfessionalName)
select Appointment.AppointmentID as 'Appointment ID',
Client.Name as 'Client Name',
CONVERT(VARCHAR(10),Appointment.ProposedDate,111) as 'Date',
CONVERT(CHAR(8), Appointment.ProposedTime, 114)as 'Time',
Appointment.ClientDescription as 'Client Notes',
Appointment.Confirmed as 'Confirmed Appointment'
from Appointment join Client on Client.ClientID = Appointment.ForClientID
where Appointment.ForProfessionalID = @ProfessionalID
go
你試過一個LEFT JOIN? – 2010-07-14 02:15:12
爲什麼不在主查詢中'Appointment'和'asp_Users'之間創建一個連接,在'WHERE'子句中使用'@ ProfessionalName'參數並丟失局部變量'@ ProfessionalID'? SQL優化器傾向於更喜歡一個大的查詢。 – onedaywhen 2010-07-14 08:02:17