2013-04-11 94 views
1

我曾问一个问题昨天在这里questionSQL返回值作为参数

现在我改变了我的代码如下

declare @like bit, @dislike bit 

IF EXISTS (select * from likeordislike 
      where comment_id = @comment_id and likevar = 1 and dislikevar = 0) 
BEGIN 
    SET @like = 'true' 
    SET @dislike = 'false' 
END 
ELSE IF EXISTS (select * from likeordislike 
       where comment_id = @comment_id and likevar = 0 and dislikevar = 1) 
BEGIN 
    SET @like = 'false' 
    SET @dislike = 'true' 
END 
ELSE 
BEGIN 
    SET @like = 'false' 
    SET @dislike ='false' 
END 

SELECT  
    comment_id, comment_post_id, comment_user_id, 
    comment_text, comment_like, comment_dislike, 
    comment_reply_to_id, comment_date, 
    @like as begendi, 
    @dislike as begenmedi 
FROM   
    comment 
ORDER BY 
    comment_date DESC 

我想选择的意见和评论喜欢或不喜欢的状态。

我在我的asp.net网页上使用数据列表。我需要每个评论的返回值。我必须给@comment_id参数,这个查询返回每个评论的相同结果(begendi = 1, begenmedi = 0)。我怎么解决这个问题?

ScopeIdentity还是需要返回值?谢谢(我有两个表1评语表,已经COMMENT_ID 2 likeordislike表,USER_ID,likevar,dislikevar和EVENTDATE列)我不知道你想在这里实现什么

select * 
from likeordislike 
where comment_id = @comment_id and likevar = 0 and dislikevar = 1 

回答

1

,但我认为你可以在不使用程序方法并通过简单使用连接之后实现结果:

SELECT comment_id, 
     comment_post_id, 
     comment_user_id, 
     comment_text, 
     comment_like, 
     comment_dislike, 
     comment_reply_to_id, 
     comment_date, 
     begendi = CAST(CASE WHEN LikeOrDislike.Likes > 0 OR LikeOrDislike.Dislikes = 0 THEN 1 ELSE 0 END AS BIT), 
     begenmedi = CAST(CASE WHEN LikeOrDislike.Dislikes > 0 AND LikeOrDislike.Likes = 0 THEN 1 ELSE 0 AS BIT) 
FROM Comment 
     LEFT JOIN 
     ( SELECT Comment_ID, 
        Likes = COUNT(CASE WHEN LikeVar = 1 AND DislikeVar = 0 THEN 1 END), 
        Dislikes = COUNT(CASE WHEN LikeVar = 0 AND DislikeVar = 1 THEN 1 END), 
        Other = COUNT(CASE WHEN LikeVar = DislikeVar THEN 1 END) 
      FROM LikeOrDislike 
      GROUP BY Comment_ID 
     ) LikeOrDislike 
      ON Comment.Comment_ID = LikeOrDislike.Comment_ID 
ORDER BY comment_date DESC 
+2

'ISNULL'是一个双参数函数。我假设你打算在那里有一个',0'。 – 2013-04-11 09:49:53

+0

你假设正确......我需要更多的咖啡。 – GarethD 2013-04-11 10:00:30

+0

非常感谢@GarethD,但我不尝试选择喜欢和不喜欢的计数。我试图选择声明2变量(begendi,begenmedi)的评论..Left加入是正确的方式可能,但这个代码选择计数的喜欢我是错了? – serdar 2013-04-11 10:27:29