1

私は昨日ここで質問しました

今、私は以下のようにコードを変更しました

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 Web ページでデータリストを使用しています。コメントごとに戻り値が必要です。@comment_id パラメータを指定する必要があります。このクエリは、すべてのコメントに対して同じ結果を返します ( begendi = 1, begenmedi = 0)。どうすればこの問題を解決できますか?

ScopeIdentityまたは戻り値が必要ですか?ありがとう(私はcomment_id、user_id、likevar、dislikevar、およびeventdate列を持つ2つのテーブル1-commentテーブル、2-likeordislikeテーブルを持っています)

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

1 に答える 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
于 2013-04-11T09:39:02.103 に答える