我有这个存储过程,当我添加连接时,我得不到任何结果。这是因为用于连接条件的列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