【发布时间】:2021-02-05 22:31:48
【问题描述】:
只是想知道是否可以在 postgresql 中一次从 2 个不同的表中提取数据
我有以下几点:
Blocks Table - 已按如下方式创建以适应模式,因此 JSON 信息已全部存储在每个包含 36 个多边形的信息列中
| UUID (UUID) | Name (TEXT) | Type (TEXT) | Information (TEXT) |
|---|---|---|---|
| 815b2ce7-ce99-4d6c-b41a-bec512173f53 | C2 | Block | 'stored JSON info' |
| 7a9a03fc-8be6-47ca-b743-43715ebb5610 | D2 | Block | 'stored JSON info' |
| 9136dcda-2a55-4084-87c1-68ccde23aed8 | E3 | Block | 'stored JSON info' |
对于以后的查询,我需要知道每个多边形的几何形状,所以我使用将它们解析出来的代码创建了另一个表:
CREATE TABLE blockc2_ AS SELECT geom FROM (SELECT elem->>'type' AS type, elem->'properties' AS prop, elem->'geometry' AS geom FROM (SELECT json_array_elements(data) elem FROM block) f1)f2;
创建了一个最终表以仅显示几何图形(它将与已创建的 UID 相关联,如下所示
新表
| UUID (UUID) | Geometry (Geometry) |
|---|---|
| 815b2ce7-ce99-4d6c-b41a-bec512173f53 | 01030000000100000005000000972E05A56D6851C084D91C434C6C32401C05D4886B6851C086D974FA4D6C324078F4DA916D6851C036BF7504766C3240F31D0CAE6F6851C035BF1D4D746C3240972E05A56D6851C084D91C434C6C3240 |
| 7a9a03fc-8be6-47ca-b743-43715ebb5610 | 01030000000100000005000000BB05694F726851C0CB2A87A8486C32403EDC3733706851C0CD2ADF5F4A6C32409ACB3E3C726851C07E10E069726C324017F56F58746851C07C1088B2706C3240BB05694F726851C0CB2A87A8486C3240 |
| 9136dcda-2a55-4084-87c1-68ccde23aed8 | 1030000000100000005000000972E05A56D6851C084D91C434C6C32401C05D4886B6851C086D974FA4D6C324078F4DA916D6851C036BF7504766C3240F31D0CAE6F6851C035BF1D4D746C3240972E05A56D6851C084D91C434C6C3240 |
理想情况下,我需要像下面这样的代码(如果可能的话),因为如果我单独插入它们,它们不会相互关联。而不是 3 行信息,它将是 6(3 个 UUIDS 和 3 个几何)
INSERT INTO new_table (uuid, geometry) SELECT UUID FROM blocks WHERE Name='C2' AND SELECT geometry FROM second_table WHERE Name='C2'
这样的事情可能吗?
【问题讨论】:
标签: sql json postgresql