首先,我必须为糟糕的话题道歉。我没有更好的主意。
对于我网页上的内部消息,我有以下表格:
messages (id, subject, owner_id)
messages_recipients (id, recipient_id, message_id)
我需要通过一个附加字段获取特定用户的所有消息,其中包含特定消息的所有收件人ID。
例如:
messages:
id | subject | owner_id
1 | test 1 | 1
2 | test 2 | 2
messages_recipients:
id | recipient_id | message_id
1 | 10 | 1
2 | 11 | 1
3 | 10 | 2
预期结果是(用户10的消息):
message_id, subject, all users that receive message with this id
1, test 1, 10;11;
2, test 2, 10;
我想列出特定用户的所有消息。对于实现回复,我还需要用户收到特定消息的信息。
答案 0 :(得分:1)
认为这样做会:
SELECT r.message_id,subject,string_agg(r.recipient_id::text,';')
FROM messages m
INNER JOIN messages_recipients r
ON r.message_id = m.id
INNER JOIN (SELECT distinct message_id from messages_recipients
WHERE recipient_id = 10) u
ON u.message_id = r.message_id
GROUP BY r.message_id,subject