Коллеги, доброго времени суток! Подскажите пожалуйста, никак не могу разобраться уже 2-й день:
Есть таблица (результат выборки), выглядит примерно так:
id, table2_id
1, 3
1, 4
1, 5
2, 10
2, 11
2, 12
Нужно сделать LEFT JOIN table2 к этой таблице (выборке), со следующим условием: к каждой строке должны быть приJOIN'ены строки группы (id) в которую он входит. То есть, к каждой строке должно приJOIN'интся в данном случае, строки 1, 2, 3 (id=1) строки из table2 с id=[3,4,5], а к строки 4,5,6 (id=2) — строки из table2 с id=[10,11,12], т.е. к каждой строке исходной таблицы (выборки) в данном случае должны приJOIN'иться ещё по 3 строки из таблицы2.
Извините за сумбурную постановку вопроса, не знаю как ещё его сформулировать. Разумеется, я перепробовал уже несколько способов, в т.ч. пробовал LEFT JOIN array_agg(), но Postgres ругается что нельзя использовать агрегатные функции в JOIN'ах. Единственным полностью рабочим вариантом на данный момент у меня оказался LEFT JOIN (SELECT ... ), но с учётом того, что исходная выборка может насчитывать несколько десятков (или даже сотен) тысяч результатов — делать такое кол-во подзапросов, я думаю не очень хорошее решение. Наверняка есть какое-то простое и элегантное решение для подобных задач
Раз у Вас уже есть рабочее решение, почему бы его не показать (лучше в виде sqlfiddle / self-contained test case)?
А то описание не очень понятное, в самом деле...