La procédure stockée ci-dessous renvoie les données d'un certain nombre de tables connexes et effectue également une application croisée sur la table des votes. Cette application croisée renvoie une moyenne de toutes les valeurs de véracité dans la colonne truthid associée à un articleart particulier et la même chose pour la colonne pertinenceid. Cela fonctionne très bien sauf quand il n'y a pas encore de votes pour un article particulier. Dans ce cas, le proc stocké ne renvoie rien du tout. Quelqu'un peut-il penser à un bon moyen de résoudre ce problème étant donné que je ne veux pas fudge un record dans la table des votes?SQL 2008 stocké proc ne renvoie rien si CROSS APPLY n'est rien. Comment puis-je réparer?
( @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
merci. ça a marché. – Cunners