一次读取与结果集中每条记录相关的多条记录



我有3个表:

  • MessageMsgIDMsgTextMsgDate列。MsgId为PK
  • MessageSender 表有MsgId, SenderId, SenderNameMsgId是FK.
  • MessageTo 表有MsgId, ToId, ToNameMsgId是FK.

每条消息将有一个Sender。但是它可以有多个接收者。即对于Message表中的每条记录,MessageSender表中将有一条记录,MessageTo表中将有多条记录。

我想在一个查询或一次中获得所有消息的所有详细信息。例如,对于特定的消息,谁是发送者,谁都是接收者。

我该怎么做?

我使用的是MSSQL Server 2005和Sybase 15.

注:这里我只给出了表格的相关细节。而且我无法更改表模式,因为它在生产环境中已经存在很长时间了。

select distinct M.MsgID, M.MsgText, MS.SenderID, MS.SenderName, 
MT.ToName, MT.ToId 
from Message M, MessageSender MS, MessageTo MT
where M.MessageID = MS.MessageID and 
M.MessageID = MT.MessageID 
and MsgDate like '%20130307%' -- To get the messages sent on 07-Mar-2013

最新更新