我有3个表:
-
Message
表有MsgID
、MsgText
、MsgDate
列。MsgId
为PK -
MessageSender
表有MsgId
,SenderId
,SenderName
。MsgId
是FK. -
MessageTo
表有MsgId
,ToId
,ToName
。MsgId
是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