Допустим, у меня есть функция электронной почты, и мне нужно выбрать получателей электронной почты.
users
В таблице есть столбцы: id
, full_name
emails
В таблице есть столбцы: id
, subject
, body
, sender_id
, recipient_id
Псевдокод:
SELECT
e.id AS email_id,
e.subject AS email_subject,
u_sender.full_name AS sender_name,
u_recipient.full_name AS recipient_name
FROM emails e
LEFT JOIN users u_sender
ON e.sender_id = u_sender.id
LEFT JOIN users u_recipient
ON e.recipient_id = u_recipient.id
Это будет возвращать что-то вроде:
|email_id |email_subject |имя отправителя |имя-получателя |
|1 |Привет |Джон |Стив |
|1 |Привет |Джон |Марк |
|1 |Привет |Джон |Питер |
Вместо этого есть способ получить что-то вроде:
|email_id |email_subject |имя отправителя |имя-получателя |
|1 |Привет |Джон |[Стив, Питер, Марк] |
Обратите внимание, что они имеют одинаковые email_ids, потому что мое приложение может отправлять электронную почту нескольким получателям.
Я нашел похожий вопрос , но решение является apache-эксклюзивным.
Я также нашел ответ, который использует XML PATH здесь , но это для SQL Server 2005. Я использую postgres.
Заранее спасибо.