Postgres 10.5: Создать материализованное представление, где данные столбца могут быть пустыми / нулевыми? - PullRequest
0 голосов
/ 31 декабря 2018

Я создаю материализованное представление из двух таблиц, используя функцию array_agg для объединения строк от table_b до table_a.По сути, column_c на table_a является массивом чисел, обнуляемым, соответствующим столбцу id в table_b (который имеет только два столбца, id и description).Однако материализованному представлению не удается включить строку для любой строки в table_a, которая равна нулю / пуста в column_c.

Можно ли заставить Материализованное либо (1) ввести пустой массив;или (2) нулевое значение, когда table_a column_c значение равно нулю?

CREATE MATERIALIZED VIEW my_materialized_view
AS
SELECT
  id,
  column_a,
  column_b,
  array_agg(description) as column_c
FROM table_a
JOIN table_b on table_b.id = any(column_c)
GROUP BY table_a.id
ORDER BY table_a.id ASC
WITH DATA;

1 Ответ

0 голосов
/ 01 января 2019

Использование LEFT JOIN:

CREATE MATERIALIZED VIEW my_materialized_view
AS
SELECT
  id,
  column_a,
  column_b,
  array_agg(description) as column_c
  -- or
  -- coalesce(array_agg(description), '{}') as column_c
FROM table_a
LEFT JOIN table_b on table_b.id = any(column_c)
GROUP BY table_a.id
ORDER BY table_a.id ASC
WITH DATA;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...