2010-12-13 103 views
1

Quesテーブルでは、以前に追加された行の一部が、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

間違ったタイトル。それは必要なすべての行を正確に返します。タイトルは、 "i dont know sql"スタイルの代わりに、SQL側の問題(転送で失われた行)を示します。 – TomTom

答えて

2

私は手動で、それがNULLとしてAdminLangIDを持つもの、それらを返さなくWUD、いくつかの行のAdminLangIDを設定します。インナーはAdmin.Langに参加

は、クエリのみに充填AdminLangIDた行を返すことを意味し、それはヌル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 
+0

ありがとうございました:) – Serenity

関連する問題