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

时间:2011-06-30 14:12:10

标签: php mysql

我有两张桌子:

消息:

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的分组将仅返回第一个收件人。

这种情况的最佳做法是什么? 我应该进行两个单独的查询(一个用于邮件本身,一个用于收件人)? 还有其他选择吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:1)

在MySQL中,您可以使用GROUP BY和GROUP_CONCAT完成此操作(因此所有收据将在结果集中的一个字段中进行连接)