您好我需要一些关于此查询的帮助。我试图使用他们的UserId选择属于两个用户的所有消息。我想返回一个变量来知道CurrentUserId是每个消息的Receiver还是Sender。
表格结构:
表名:消息
列名:
预期输出示例:
消息--------------------------- SentDate ------------------------------ FROMME
Hello User -------------------------- 23:45,16 / 2/2012 ---------- ------------真----
立即查询:
SELECT Message, SentDate FROM Messages
WHERE SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser
OR SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser
所以我基本上想做的是我想要返回这些用户一直发送给彼此的所有消息,如果@CurrentUser是每个接收者的发送者,我也想知道一个布尔值信息。如果消息是从@CurrentUser发送的,则为True;如果消息是由@OtherUser发送的,则为False。 感谢
答案 0 :(得分:5)
SELECT Message, SentDate ,
CASE
WHEN SenderUserId=@CurrentUser THEN 'True'
ELSE 'False'
END as is_sent_by_current_user
FROM Messages
WHERE (SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser )
OR (ReceiverUserId=@CurrentUser AND SenderUserId=@OtherUser)
答案 1 :(得分:0)
这应该可以解决问题。
SELECT Message, SentDate,case when SenderUserId = @CurrentUser then 'true' else 'false' end as sentByYou FROM Messages
WHERE (SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser)
OR (SenderUserId=@OtherUser AND ReceiverUserId=@CurrentUser)
答案 2 :(得分:0)
如果您不需要使用存储过程从SQL获取数据,我建议您获取所需的数据,然后在代码中进行所有必要的检查。通过这样做,您的所有规则和计算将在1个位置(理想情况下为BLL)。
希望它有所帮助。