2016-08-10 13 views
0

Мне трудно найти документацию PostgreSQL, чтобы найти правильную терминологию для связи с созданием таблицы/представления в предложении WITHMATERIALIZED VIEW.Что такое имя объекта, созданного в статье WITH в материализованном представлении в Postgres?

Для следующего matview (оговорка AS WITH является точкой фокуса):

CREATE MATERIALIZED VIEW my_big_fat_payments_matview AS WITH 
    some_structure_representing_records_paid AS 
    (
     SELECT polymorphic_fk_id, polymorphic_fk_type, amount, transaction_time 
     FROM my_big_fat_billing_table 
     WHERE some_condition = 'A First Condition' 
     AND some_other_condition IS NOT NULL 
    ), 
    some_structure_representing_records_discounted AS 
    (
     SELECT polymorphic_fk_id, polymorphic_fk_type, amount, transaction_time 
     FROM my_big_fat_billing_table 
     WHERE some_condition = 'A Second Condition' 
     AND some_other_condition IS NOT NULL 
    ), 
    some_structure_representing_records_misc AS 
    (
     SELECT polymorphic_fk_id, polymorphic_fk_type, amount, transaction_time 
     FROM my_big_fat_billing_table 
     WHERE some_condition = 'A Threeved Condition' 
     AND some_other_condition IS NOT NULL 
    ) 
SELECT 
    thetable.column_a AS column_a, 
    thetable.column_x AS column_x, 
    thetable.amount AS amount, 
    secondtable.amount AS second_amount, 
    thirdtable.amount AS third_amount, 
    fourthtable.amount AS fourth_amount 
FROM my_big_fat_billing_table AS thetable 
LEFT JOIN some_structure_representing_records_paid AS secondtable 
    ON thetable.polymorphic_fk_id = secondtable.polymorphic_fk_id 
LEFT JOIN some_structure_representing_records_discounted AS thirdtable 
    ON thetable.polymorphic_fk_id = thirdtable.polymorphic_fk_id 
LEFT JOIN some_structure_representing_records_misc AS fourthtable 
    ON thetable.polymorphic_fk_id = fourthtable.polymorphic_fk_id 
WHERE thetable.type = 'Some Type' 

Что такое название для some_structure_representing_records_paid, some_structure_representing_records_discounted и some_structure_representing_records_misc объектов в запросе? Они видят? Я случайно назвал их «под-представлениями» matview, но я, похоже, не нашел пути к более глубокому документированию предложения WITH этого matview, чтобы определить, подходит ли этот вид жаргона. Если они не являются представлениями, каковы они? Могут ли они быть синонимами? Являются ли они временными таблицами, которые существуют только для выбора данных и создания matview?

Примечание: мой matview более сложный, чем это, поэтому я не прошу критиковать структуру/формат/использование/etc.

+3

Это КТР, либо общие выражения таблицы. Они могут использоваться как часть любого запроса (а не только для представления). – AaronLS

+0

Спасибо, сэр, что сделало поиск в Интернете моего ответа очень простым (не знаю, почему эта информация отсутствует в документации 'WITH', связанной с документацией' MATERIALIZED VIEW'). В любом случае @AaronLS, если вы опубликуете это как ответ со ссылкой на это: https://www.postgresql.org/docs/9.3/static/queries-with.html и процитируйте, что первая строка, в которой упоминается «временная таблица» », Я соглашусь в качестве ответа :). – Todd

+0

@Todd, потому что CTE не имеют ничего общего с VIEWS. –

ответ