多个查询结果在单个结果json中

时间:2018-02-04 06:14:40

标签: arrays json postgresql metamug

以下是我的请求标记。

 <Request method="GET" >
   <Query>
     select colA as "a", colB as "b", colC "c"
     from tableX
   </Query>

   <Query>
     select colP as "a", colQ as "b"
     from tableY
   </Query>
 </Request>

输出

[
  [{"a":40,"b":22,"c":63},{"a":28,"b":72,"c":91}],
  [{"a":53,"b":12},{"a":35,"b":74},{"a":95,"b":84},{"a":15,"b":60}]
]

现在,应用程序开发人员正在请求将所有json数据放在一个数组中。这样他就可以映射到单个列表中的对象。

但是当在请求标记中使用两个单独的查询时,metamug在主数组中提供了2个不同的数组。

他们的documentation没有提到如何实现这一目标。我正在为数据库使用postgres。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用Union加入两个结果,但是在第二个查询中,您必须再添加一个虚拟列,以便列数匹配并且他们的数据类型也是如此 (请仔细阅读this了解有关在使用UNION之前需要采取哪些必要类型措施的详情。)
所以你可以这样写你的资源文件。

<Request method="GET" >
   <Query>
     (select colA as "a", colB as "b", colC "c"
     from tableX)
     UNION
     (select colP as "a", colQ as "b", 'dummy' as "c"
     from tableY)
   </Query>
 </Request>

请参阅我添加了一个额外的列c,其中包含默认文字&#39; dummy&#39; ,我还假设第一个查询的c列类型是text,如果不是这样,那么进行适当的更改。