在Ques Table中,一些早期添加的行将AdminLangID列的值设置为NULL。以下SP也应返回这些行,但事实并非如此。怎么了?我需要添加什么条件才能返回 ALL 行?我只是手动设置某些行的AdminLangID,然后它将返回那些,但不是AdminLangID为NULL的那些。我希望它也能返回那些行。我需要改变什么?此SP已用于绑定页面上的网格,并且网格仅呈现AdminLangeID为NOT NULL的行。
BEGIN
IF @QuesID = 0
SET @QuesID =NULL
SELECT FQ.QuesID, FQ.Ques,QuesAns
FROM Admin.Ques FQ
INNER JOIN Admin.Lang AL ON AL.AdminLangID=FQ.AdminLangID
WHERE FQ.QuesID = Coalesce(@QuesID,QuesID)
END
答案 0 :(得分:2)
我只是手动设置某些行的AdminLangID,然后它返回那些但不是AdminLangID为NULL的那些。
Admin.Lang的内部联接意味着查询将仅返回已填写AdminLangID的行。将其更改为外部联接以使其返回具有null AdminLangID的行:
ALTER PROC [Schema2].[GetQues]
(
@QuesID int
)
AS
BEGIN
IF @QuesID = 0
SET @QuesID =NULL
SELECT FQ.QuesID, FQ.Ques,QuesAns as QuesAns,FQ.QuesAns[Answers], FQT.QuesType ,FQ.QuesTypeID, FQ.QuesParentID, FQ.Active, FQ.AdminLangID,AL.TelerikLang, AL.LangID
FROM Admin.Ques FQ
LEFT OUTER JOIN Admin.QuesTypes FQT ON FQT.QuesTypeID=FQ.QuesTypeID
LEFT OUTER JOIN Admin.Lang AL ON AL.AdminLangID=FQ.AdminLangID
WHERE FQ.QuesID = Coalesce(@QuesID,QuesID)
END