Sql选择问题

时间:2012-02-15 23:22:02

标签: c# sql sql-server windows-phone-7

您好我需要一些关于此查询的帮助。我试图使用他们的UserId选择属于两个用户的所有消息。我想返回一个变量来知道CurrentUserId是每个消息的Receiver还是Sender。


表格结构:

表名:消息

列名:

  • SenderUserId(发送邮件的用户的ID)
  • ReceiverUserId(邮件发送到的用户的ID)
  • 消息(保留消息)
  • SentDate(发送邮件时)

预期输出示例:

消息--------------------------- 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。 感谢

3 个答案:

答案 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)。

希望它有所帮助。