मैं Stored Procedure
नीचे है -कैसे क्रॉस में खाली पंक्तियों को संभालने के लिए लागू [एसक्यूएल सर्वर]
ALTER PROCEDURE [dbo].[Optimized_GetArticlePostAMP]
(
@PostID int
)
AS
BEGIN
SET NOCOUNT ON;
SET STATISTICS TIME ON
DECLARE @SectionId int ,@datediff int
DECLARE @postdate datetime
SELECT P.PostId, P.SectionID, P.PostName,MP.MetaTitle,P.Postdate,P.PostAuthor,P.IsApproved,
MP.Metadescription, MP.Metakeywords,ISNULL(MP.IsRobotsMetaTag,0) as IsRobotsMetaTag,p.TotalViews, P.Subject, P.FormattedBody,
MV.Isvideo,MV.VideoCode,MV.VideoCaption, A.DrComment,A.SpanishURL, PS.RedirectUrl, Isnull(PS.IsRedirect,0) as IsRedirect,
ISNULL(A.CommentedBy,38633) as CommentedBy ,MP.Canonical as Canonical,ISNULL(MP.RRpopUP ,0) as RRpopUP,ISNULL(A.PrevPost,0) as PreviousPostId,
ISNULL(A.NextPost,0) as NextPostId,PS.StatusId ,dbo.[mercola_GetCommentCountForPost](@PostId) as TotalReplies, isnull(PA.[FileName],'') as FileName,
PRD.StoryImage, PRD.StoryContent, ISNULL(NULLIF(prd.ALT, ''), P.Subject) AS ALT, ISNULL(PR.ReferenceData,'')as ReferenceData,
MH.LastModifiedDate,
CASE WHEN CHARINDEX('<p><strong>By', FormattedBody, -1)=1 THEN LTRIM(SUBSTRING(REPLACE(CAST(FormattedBody as varchar(max)),'<p><strong>By ',''),0,CHARINDEX('<',REPLACE(cast(FormattedBody as varchar(max)),'<p><strong>By ',''))))
ELSE 'Dr.Mercola' END as Name
FROM cs_posts P
LEFT JOIN Mercola_NewsletterDetails A on (P.Postid = A.postid)
LEFT JOIN Mercola_PostStatus PS on (PS.postid=p.postid)
LEFT JOIN Mercola_PostMetatags MP on(P.postid=MP.Postid)
LEFT JOIN Mercola_postVideo MV on(P.postid=MV.Postid)
LEFT JOIN CS_PostAttachments PA on P.PostId=PA.PostId AND PA.contenttype LIKE 'audio/mpeg' AND PA.FILENAME LIKE '%.mp3' AND PA.isremote = 1
LEFT JOIN Mercola_PostRelatedData PRD on P.PostId=PRD.PostId
LEFT JOIN Mercola_PostReferences PR on P.PostId=PR.PostId
CROSS APPLY (select top 1 LastModifiedDate from Mercola_ArticleModifiedHistory where Mercola_ArticleModifiedHistory.Postid = P.postid order by LastModifiedDate desc)MH
where P.Postid = @Postid
अब, जब मैं ऊपर SP
नीचे PostID
साथ execute
-
--[Mercola_Optimized_GetArticlePostAMP] 732490
मैं नीचे मिल डेटा जो expected
है। चूंकि, cross apply
के अंदर की क्वेरी में postID
के लिए डेटा है।
लेकिन अब, जब मैं नीचे विभिन्न PostID
के साथ एक ही SP
execute
-
--[Mercola_Optimized_GetArticlePostAMP] 40702
मैं empty data [rows]
नीचे मिलता है। चूंकि, cross apply
के अंदर की क्वेरी में postID
के लिए डेटा नहीं है, अन्य joins
डेटा है।
उपरोक्त मामले के लिए अपेक्षित परिणाम - वापसी डेटा और CROSS APPLY
के लिए बताए डिफ़ॉल्ट मान। मैं यह कैसे कर सकता हूं?
उपयोग लंघन करने के लिए 'बाहरी आवेदन' के बजाय – gofr1
@ gofr1 धन्यवाद, यह काम किया। लेकिन अब जब मैं डेटा नहीं रखता हूं तो डिफ़ॉल्ट मान असाइन करना चाहता हूं .. –
मैं सभी को एक जवाब में औपचारिक रूप से कार्यान्वित करता हूं। कृपया नीचे देखे। – gofr1