簡體   English   中英

如果CROSS APPLY為空,則SQL 2008存儲的proc不返回任何內容。 我該如何解決?

[英]SQL 2008 stored proc returns nothing if CROSS APPLY is nothing. How can I fix?

下面存儲的proc返回來自許多相關表的數據,並且對票表進行了叉號運算。 此交叉應用返回與特定articleid關聯的trueid列中所有真實值的平均值,而relevanceid列則相同。 這非常有效,除了尚未為特定商品ID投任何票時。 在這種情況下,存儲的過程根本不返回任何內容。 鑒於我不想在投票表中捏造記錄,有人能想到解決此問題的好方法嗎?

(@ArticleID int)

AS
BEGIN
WITH Article AS
(

SELECT
tbrm_Article.ArticleID, 
tbrm_Article.CountryID,
tbrm_Article.CategoryID,
tbrm_Article.Title,
tbrm_Article.ArticleDetail,
tbrm_Article.Source,
tbrm_Article.ArticleDateTimeAdded,
tbrm_Article.UserId,
tbrm_Article.ViewCount,
tbrm_Article.CommentCount,
tbrm_CountryList.CountryName AS CountryName,
tbrm_CategoryList.CategoryName AS CategoryName,
aspnet_Users.UserName AS UserName,
Truthfulness,
Relevance

FROM         
tbrm_Article INNER JOIN
tbrm_CountryList ON tbrm_Article.CountryID = tbrm_CountryList.CountryID INNER JOIN
tbrm_CategoryList ON tbrm_Article.CategoryID = tbrm_CategoryList.CategoryID INNER JOIN
aspnet_Users ON tbrm_Article.UserID = aspnet_Users.UserID
CROSS APPLY (
SELECT tbrm_Votes.ArticleID, AVG(tbrm_Votes.TruthID), AVG(tbrm_Votes.RelevanceID)
FROM tbrm_Votes
WHERE tbrm_Article.ArticleID = tbrm_Votes.ArticleID
GROUP BY tbrm_Votes.ArticleID
) AS Votes(ArticleID,Truthfulness,Relevance)

WHERE

tbrm_Article.ArticleID = @ArticleID)
SELECT * FROM Article
END
OUTER APPLY

類似於OUTER JOIN

順便說一句,不要將SQL 2008稱為“ SQL 08”。 這讓我想到了SQL 2000(即v8)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM