1
私はoccasion
とrelation
のテーブルを持っています。 relation.occasions
はjsonタイプのフィールドで、機会の配列を含んでいます。私はのレコードを関係で取得したいと考えています。をrelation.occasions
にします。これは私のDBのデータであることを、前提としていますPostgreSQLの使い方json_array_elements whit WHERE <value> IN節
機会
key | name |
-------------------------------------
BIRTHDAY | Birthday |
ANNIVERSARY | Anniversary |
関係
key | occasions |
------------------------------------------------------
FATHER | [ "BIRTHDAY", "ANNIVERSARY" ] |
FRIEND | [ "BIRTHDAY" ] |
は、ここで私が使用しようとしているクエリです:
SELECT * FROM occasion o WHERE o.key IN
(SELECT json_array_elements(r.occasions)::text from relation r WHERE r.key = 'FATHER')
結果は0行です2.誰かが私に間違っていることをヒントを与えることができますか?どのように私は希望の結果を達成することができますか?
'select o。* from occasion o join relation r on(o.key = any(json_array_elements_text(r.occasions)を選択)とr.key = 'FATHER');' - より簡単ですが、キーはユニークです。 – Abelisto
@Abelisto選択リストでSRFを使用することは避けてください。[クエリのFROM句でテーブル、ビュー、またはサブクエリのように使用されます。](https://www.postgresql.org/docs/9.5/ static/queries-table-expressions.html#QUERIES-TABLEFUNCTIONS) – Patrick
あなたのリンクは、SRFの使用についてではなく、 'FROM'節に関するものです。 [SELECTリターン関数の設定](https://www.postgresql.org/docs/9.5/static/functions-srf.html)、公式ドキュメントの例: 'SELECT generate_series(1.1、4、1.3);' – Abelisto