2016-04-26 21 views
2

私が定義したいくつかのルールに従ってpostgreSQL DBに格納された配列から単一の要素を取り出し、それを他のデータと結合する必要があります。特にpostgreSQLのJSON配列から単一要素を取得

eid | listId | type | val 
----+--------+------+----- 
10 | 0ab2c | 3 | c 
11 | 01abc | 2 | b 
12 | a0b31 | 2 | b 

:私はlistテーブルからのみ要素を抽出してのようなものを得るためにelem表と結果への参加を希望

postgres=# SELECT * FROM list; 
id | list 
------+----------------------------------------------------------------------------- 
0ab2c | [{type: 1, val: a}, {type: 3, val: c}, {type: 4, val: d}] 
01abc | [{type: 1, val: a}, {type: 2, val: b}] 
a0b31 | [{type: 1, val: a}, {type: 2, val: b}, {type: 3, val: c}] 

postgres=# SELECT * FROM elems 
eid | listId 
----+------- 
10 | 0ab2c 
11 | 01abc 
12 | a0b31 

:私は例を作ってみようjson配列内の要素は、(私はJSにそれを書いていますので、私はもっと慣れていますが、関数はplpgSQLになければなりません)のような関数に従って選択する必要があります:

ここで、リスト内の要素は、特定の型に属し、配列内で最初に許可された要素であることによって取得されます。

答えて

0

これは十分に簡単なはずです。それはあなたがこのページからオペレータを必要とするようになっています

DO $$ 
cur RECORD; 
BEGIN 
FOR cur IN SELECT * FROM LIST 
//do something with your JSON 
END LOOP; 
END $$; 

http://www.postgresql.org/docs/current/static/functions-json.html

そして、あなたは、PL/pgSQLで設定された任意の結果をループに希望する必要があり、このようなものに見えます

関連する問題