正規化を支援するために、キーと値のペアをデータベースに保存しています。私がやりたいことは、「Apple」や「Banana」などの識別子に基づいて、一致するすべてのキー/値を反復処理し、キー/値ペアの「完全な」テーブル バージョンと同等のビューを生成することです. 詳細については、以下のフィドルを参照してください。
ある種のカーソルを使用する必要があると思いますが、この種の問題に対する「最善の」アプローチについてはわかりません。
ID がビュー内の目的の行を一意に識別したと仮定すると (Fiddle の例ではそうではありません)、次のようなビューを作成できます。
create view details_view as
select id,
max(case when key='Color' then value end) as color,
max(case when key='Location' then value end) as location,
max(case when key='Price' then value end) as price,
from details
group by id;
私は以前、このようなクエリを生成するのに役立つパッケージを作成しました。ブログを参照してください。(私はここでもこの種のデータモデルに反対しました!)
ID はオブジェクトごとに一意である必要があります。次に、タイプは別のキーになることができます。