Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在postgresql中计算json数组中的所有键_Json_Postgresql - Fatal编程技术网

如何在postgresql中计算json数组中的所有键

如何在postgresql中计算json数组中的所有键,json,postgresql,Json,Postgresql,我有一个表,其中有表单id和表单字段列 ======================= form_id | form_fields ======================= 1 | [abc,def] 现在还有一个表包含提交表单的响应数据,如下所示 ================================ device_id | form_id | response ================================ 101 | 1

我有一个表,其中有表单id和表单字段列

=======================
form_id | form_fields
=======================
  1     | [abc,def]
现在还有一个表包含提交表单的响应数据,如下所示

================================
device_id | form_id | response
================================
  101     |    1    | {abc:true}
================================
  102     |    1    | {def:true}
================================
  103     |    1    | {def:true}
================================
  101     |    2    | {xyz :true}
我想从第二个表中获取第一个表中
form\u id
1
form\u字段的所有数组值计数。我的意思是结果可能是这样的

{abc:1,def:2}
一种方法是对所有响应生成一个简单的json,然后逐个迭代json对象并检查值。有没有其他有效和更好的方法来解决这个问题?我是新来的
postgres
,如果这太基本了,请忽略


谢谢

我不太确定这个
{abc:true}
,因为我只处理列中的值,而不是键值对,所以如果我错了,请纠正我

但是,如果它们也只是值(比如varchar/…),那么这应该是可行的

从您的表格中选择count(*),其中form\u id=1,response='abc'

从表格中选择count(*),其中form_id=1,response='def'