【问题标题】:How to use other table JSON data in select query如何在选择查询中使用其他表 JSON 数据
【发布时间】:2017-09-07 11:24:18
【问题描述】:

我正在使用 postgres 并有 2 个表,deviceTble 具有以下列:deviceNamedevice_idtypedeviceOwnerPerson_iddeviceAccessPerson_id

另一个表是Person_kv,有两列id,data(包含人员信息,但采用 JSON 格式)。

我想从 deviceTble 中进行选择查询,并希望通过给定的 deviceOwnerPersonId 和 deviceAccessPersonId 使用 Person_kv 表中的人的名字和姓氏。

这是我必须从 person_kv 表中获取数据以获取表格形式的数据:

select data :: json ->> 'id' as id
  , data :: json ->> 'name' as first_name
  , data :: json ->> 'surename' as last_name
from Person_kv

和预期的 deviceTble 查询:

select deviceName,device_id,type from deviceTble 

我很困惑,要么在 person_kv 查询上使用 WITH 子句,然后在此处加入,要么在 deviceOwnerPerson_id 和 deviceAccessPerson_id 上一一加入,或者是否还有其他方法可以使用内部查询

谁能告诉我如何获得所需的结果?

【问题讨论】:

标签: sql json postgresql


【解决方案1】:

根据你的描述,你可以加入他们:

select deviceName,device_id,type, p.data:: json ->>'name' , p.data:: json ->>'surname' 
from deviceTble d
join Person_kv  p on p.data:: json ->>'id' = deviceOwnerPerson_id::text OR p.data:: json ->>'id' = deviceAccessPerson_id::text

【讨论】:

  • 完美解决方案。我正在考虑通过在两个语句上使用 With 子句来使用 join。
猜你喜欢
  • 2018-12-19
  • 2019-06-24
  • 2013-12-15
  • 2020-05-14
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
相关资源
最近更新 更多