有效的存储过程不返回

问题描述:

我有以下存储过程有效的存储过程不返回

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不会。两者都是数据库中的有效记录。

+0

你尝试执行您刚用该值查询?它是否返回任何行? – hgulyan 2010-07-22 05:45:06

+0

是的,这就是我对它的测试。 – 2010-07-22 05:47:50

大概在一个地区ID的[61],[62],[63]的列这是不dbo.bt_Regions(或为NULL,这将永不满足任何相等条件)

INNER JOIN要求(相等)条件得到满足 - 所以必须找到一行

如果任何一个INNER JOIN没有满足条件,则不会得到任何行。

你要么需要纠正你的外键为有效或改变一个LEFT JOIN与空值的适当处理时,右手边有没有行满足连接标准

+0

是的,他应该将INNER JOIN改为LEFT JOIN。 – hgulyan 2010-07-22 05:46:13

+0

就是这样。那么如何“修复它”以允许NULL 61,62,63? – 2010-07-22 05:47:03

+0

只要将INNER JOIN更改为LEFT JOIN,如上所述。 – hgulyan 2010-07-22 05:47:46