2016-06-24 1 views
2

テーブルエイリアス経由でPostgreSQLのカスタム型付きカラムの個々の属性を選択する方法はありますか?テーブルエイリアスを使用せずに、列の名前を括弧でラップすると正常に動作します。テーブルエイリアスが導入されるとすぐに、クエリは構文エラーで失敗します。テーブルエイリアスを使用してカスタムタイプの属性をどのように選択しますか?

私は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; 
関連する問題