有效的存储过程不返回
问题描述:
我有以下存储过程有效的存储过程不返回
ALTER PROCEDURE [dbo].[bt_BizForSale_GetByID]
(
@ID int
)
AS
SET NOCOUNT ON
SELECT dbo.bt_BizForSale.UserID,
dbo.bt_BizForSale.VendorType,
dbo.bt_BizForSale.BusinessName,
dbo.bt_BizForSale.isEmailSubscriber,
dbo.bt_BizForSale.isIntermediarySubscriber,
dbo.bt_Regions.Region AS Country,
bt_Regions_1.Region AS Province,
bt_Regions_2.Region AS City,
dbo.bt_BizForSale.[AdType]
FROM dbo.bt_BizForSale INNER JOIN
dbo.bt_Regions ON dbo.bt_BizForSale.[61] = dbo.bt_Regions.ID INNER JOIN
dbo.bt_Regions AS bt_Regions_1 ON dbo.bt_BizForSale.[62] = bt_Regions_1.ID INNER JOIN
dbo.bt_Regions AS bt_Regions_2 ON dbo.bt_BizForSale.[63] = bt_Regions_2.ID
WHERE (dbo.bt_BizForSale.ID = @ID)
当我从表一中有效身份证件执行它,它不返回任何结果的任何结果。我可能会错过什么?
PS:在“最”有效的ID的我传递给存储过程,我得到我正在寻找的结果。
例如:10010将返回结果,但10104不会。两者都是数据库中的有效记录。
答
大概在一个地区ID的[61],[62],[63]的列这是不dbo.bt_Regions(或为NULL,这将永不满足任何相等条件)
INNER JOIN要求(相等)条件得到满足 - 所以必须找到一行
如果任何一个INNER JOIN没有满足条件,则不会得到任何行。
你要么需要纠正你的外键为有效或改变一个LEFT JOIN与空值的适当处理时,右手边有没有行满足连接标准
你尝试执行您刚用该值查询?它是否返回任何行? – hgulyan 2010-07-22 05:45:06
是的,这就是我对它的测试。 – 2010-07-22 05:47:50