消息系统.多个收件人,正在检索数据.最佳实践


Messaging system. Multiple recipients, retrieving data. Best Practice

我有两个表:

消息:

id
message_text
..omitted..

收件人

id
message_id
recipient_id
..omitted..

我想在表格中显示你发送的信息,以及你发送给谁。

to                        message        date
paul,roger,micheal        howdy          2011 12 12
paul                      hello          2011 12 12
paul,micheal              hi             2011 12 12

显然,由于有多个收件人,联接查询将为x个收件人返回x条重复记录,对id进行分组将只返回第一个收件人。

这种情况下的最佳实践是什么?我是否应该进行两个单独的查询(一个针对邮件本身,一个针对收件人(?有其他选择吗?

非常感谢

尝试使用GROUP_CONCAT()

SELECT
  GROUP_CONCAT(recipient_name) AS recipients,
  message_text AS message,
  date
FROM Messages JOIN Recipients ON Messages.id = Recipients.message_id
GROUP BY Recipients.message_id, message_text, date

在MySQL中,您可以使用GROUP BY和GROUP_CONCT来实现这一点(因此所有接收方都将连接到结果集中的一个字段中(