2016-06-24 2 views
2

Есть ли способ выбрать отдельные атрибуты настраиваемого столбца в PostgreSQL через псевдоним таблицы? Без использования псевдонима таблицы обертывание имени столбца в parens прекрасно работает. Как только появляется псевдоним таблицы, мой запрос терпит неудачу с синтаксической ошибкой.Как вы выбираете атрибуты настраиваемого типа через псевдоним таблицы?

Я просмотрел документы Postgres и не смог найти ничего, иллюстрирующее, как это сделать. Неужели это возможно?

CREATE TYPE test_type AS (
    some_text TEXT, 
    some_number INTEGER 
); 

CREATE TABLE test_table (
    id SERIAL PRIMARY KEY, 
    some_test test_type NOT NULL 
); 

INSERT INTO test_table (some_test) 
VALUES (ROW('SOME TEXT', 42)); 

-- This works great 

SELECT id, (some_test).some_text, (some_test).some_number 
FROM test_table; 
┌────┬───────────┬─────────────┐ 
│ id │ some_text │ some_number │ 
├────┼───────────┼─────────────┤ 
│ 1 │ SOME TEXT │   42 │ 
└────┴───────────┴─────────────┘ 

Как только псевдоним таблицы вводится вы не можете выбрать отдельные атрибуты пользовательского напечатал колонку

SELECT id, x.(some_test).some_text, x.(some_test).some_number 
FROM test_table AS x; 

ERROR: syntax error at or near "(" 
LINE 1: select id, x.(some_test).some_text, x.(some_test).some_numbe... 
        ^

ответ

2

Вы должны поставить скобки вокруг комбинации алиаса и колонки:

SELECT id, (x.some_test).some_text, (x.some_test).some_number 
FROM test_table x; 
Смежные вопросы