Чтение нескольких записей, связанных с каждой записью в наборе результатов одновременно
У меня есть 3 таблицы:
Message
стол сMsgID
,MsgText
,MsgDate
колонны.MsgId
это ПК.MessageSender
стол сMsgId
,SenderId
,SenderName
,MsgId
это ФК.MessageTo
стол сMsgId
,ToId
,ToName
,MsgId
это ФК.
Каждое сообщение будет иметь одного отправителя. Но это может иметь много получателей. т.е. для каждой записи в Message
таблица, будет одна запись в MessageSender
таблица и более одной записи в MessageTo
Таблица.
Я хочу получить ВСЕ детали всех Сообщений в одном запросе или за один раз. например, для конкретного Сообщения, кто является Отправителем и кто ВСЕ являются получателями.
Как я могу это сделать?
Я использую MSSQL Server 2005 и Sybase 15.
Примечание: я дал только соответствующие детали таблиц здесь. И я не могу изменить схему таблицы, так как она уже давно в производстве.
1 ответ
Решение
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