/ / तालिका के एक कॉलम में गणना मूल्य सम्मिलित करना - sql, postgresql, postgis

तालिका के एक स्तंभ में गणना मूल्य सम्मिलित करना - sql, postgresql, postgis

मेरे पास दो टेबल हैं, जिनमें से एक की सूची हैअंक और अन्य जिसमें बहुभुजों की सूची है। मुझे पता चल रहा है कि प्रत्येक बहुभुज में कितने बिंदु हैं। मुझे आशा है कि मुझे गिनती (*) मिल गई है, लेकिन मुझे यकीन नहीं है कि मैं इसे तालिका में total_num नामक एक नई पंक्ति में कैसे सम्मिलित कर सकता हूं:

तो यहाँ उदाहरण के लिए है। तालिका 1- अंक, तालिका 2 - पाली।

सभी बिंदु ज्यामितीय डेटा के साथ the_geom कॉलम के रूप में अंक और पाली में एक आईडी, जियोम कॉलम होता है जिसमें सभी बहुभुज ज्यामितीय डेटा होते हैं।

मैं total_num (प्रत्येक बहुभुज के अंदर बिंदुओं की संख्या) का उपयोग करने में सक्षम था:

select count(*) as total
from points, poly
where st_contains(poly.geom,points.the_geom)
group by poly.id;

मैं उन्हें ईद (पाली में अद्वितीय) के आधार पर समूहीकृत कर रहा हूंतालिका)। मुझे आशा है कि यह सही है (कृपया टिप्पणी करें यदि यह सही नहीं है)। अब मैं इसे कुल कैसे ले सकता हूं और इसे टेबल पॉली में total_num नामक कॉलम में सम्मिलित कर सकता हूं।

मैंने कोशिश की:

update poly
set total_num=select count(*) as total
from points, poly
where st_contains(poly.geom,points.the_geom)
group by poly.id;

तालिका - बिंदु:

the_geom
---------
0101000020D708000000000000E8282F4100000000F0BB0D41
0101000020D7080000000000006C892E410000000040170341
0101000020D7080000000000003EB82F4100000000A8660641
0101000020D708000000000000FA792E4100000000D01A0641
0101000020D708000000000000821F2F410000000028500841
0101000020D70800000000000004A32F4100000000B8B90241



Table - poly
------------

id  | geom | total_num

1   |(geom consist of geometrical representation of polygon
2   | which can not be entered here because its too long)
3   |
4   |
5   |
6   |

लेकिन यह मुझे एक त्रुटि देता है! धन्यवाद

उत्तर:

जवाब के लिए 0 № 1

उपयोग INNER Join के बजाय Subquery.

UPDATE poly
SET    total_num=B.total
FROM  (        SELECT   Count(*) AS total ,poly.ID
FROM     points,
poly
WHERE    St_contains(poly.geom,points.the_geom)
GROUP BY poly.id) B
where poly.id = B.id