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

时间:2013-03-07 09:06:55

标签: sql-server union sybase-ase sql-cte

我有3张桌子:

  • Message表格包含MsgIDMsgTextMsgDate列。 MsgId是PK。
  • MessageSender 包含MsgIdSenderIdSenderName的表格。 MsgId是FK。
  • MessageTo 包含MsgIdToIdToName的表格。 MsgId是FK。

每条消息都有一个发件人。但它可以有许多收件人。即对于Message表中的每条记录,MessageSender表中都会有一条记录,MessageTo表中会有多条记录

我希望在一次查询中或一次 获取所有消息的所有详细信息。例如对于特定消息,谁是发件人以及所有人都是收件人。

我该怎么做?

我正在使用MSSQL Server 2005和Sybase 15。

注意:我这里只提供了表格的相关细节。我不能改变表模式,因为它已经在生产中存在了很长时间。

1 个答案:

答案 0 :(得分:0)

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