使用 JSON 中的值连接表

Join tables with values from JSON

我在查询来自 json 个字段的数据时遇到问题。

我的 postgres 数据库(版本 10)中有一些 json 格式的列保存为文本

有时我需要能够在 json 值上加入两个 table。

我不知道我该怎么做..

这是一个简单的例子。

在我的select中我想输出水果和颜色。

我在水果 table 的 json 内有 color_cd 数字,我可以在 code_table 的另一个 json 内找到颜色。

我希望的输出应该是这样的

Fruit_ID   Name     Color
1000       Pear     Green
1001       Banana   Yellow

Fiddle link --> https://dbfiddle.uk/?rdbms=postgres_13&fiddle=3f989db0524e288183619bab63fc9add

您在 table code_table 上的专栏 records 在 json 数据中有问题,我解决了问题并更改为以下格式:

{"color_cd":{"30":{"code":"30","color":"yellow"},"55":{"code":"55","color":"green"},"60":{"code":"60","color":"red"}}}

您可以在 dbfiddle

中查看查询结构和结果

select
 f.id,
 f.name,
 j_cd.value ->> 'color' as color
from 
  code_table ct 
  cross join jsonb_each(records::jsonb -> 'color_cd') j_cd
  inner join fruits f on f.type_cd :: jsonb ->> 'color_cd' = j_cd.key::text
where 
  ct.name = 'color_cd'