Postgres 10.5: как связать массив целых чисел с первичными ключами отдельной таблицы? - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть две таблицы Postgres, TABLE_A и TABLE_B.

TABLE_A содержит столбец table_b_fks, значения которого представляют собой массив целых чисел (например, "{1,2,4}"), которые представляют собой набор первичных ключей для TABLE_B.

TABLE_B имеет два столбца, первичные ключи и text.

Моя цель - создать материализованное представление, идентичное TABLE_A, за исключением того, что массив целых чисел table_b_fks заменен массивом text из TABLE_B.

Возможно ли это?Похоже, что postgres не поддерживает массивы внешних ключей .Есть ли альтернативы?

1 Ответ

0 голосов
/ 30 декабря 2018

Фактически, массив целых чисел не может формально рассматриваться как внешний ключ, хотя его можно легко использовать для объединения таблиц:

select table_b_fks, array_agg(name)
from table_a
join table_b on id = any(table_b_fks)
group by 1

Проверить его в db <> fiddle.

Обратите внимание, что пример немного упрощен, вам нужен уникальный столбец (столбцы) в table_a для идентификации его строк (которые можно использовать в group by).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...