我正在尝试计算下表中每一行的行上的点数
CREATE TABLE outils.prod(
pk INTEGER PRIMARY KEY,
cable VARCHAR (25),
PA VARCHAR (10),
Art VARCHAR(7),
FT Numeric,
BT Numeric
);
INSERT INTO outils.prod (pk)
SELECT id_ftth
FROM outils.cable
WHERE type_cable = '2' ;
SELECT ADDGEOMETRYCOLUMN('outils','prod','geom',2154,'MultiLineString',2);
我尝试更新行表,但是我无法获取每一行的答案。
UPDATE outils.prod SET FT=(SELECT COUNT( ST_INTERSECTION(outils.prod.geom,outils.ft.geom))
FROM outils.prod , outils.ft)
使用上面的代码,我设法获得了每条线的相交总数,但是我希望在我的线表中逐行计数。
谢谢, 雨果
答案 0 :(得分:0)
您必须编写一个子查询才能对每行进行计数。
此外,您无需计算相交(几何),而只需检查它们是否相交即可,这要快得多。
UPDATE outils.prod
SET FT= sub.cnt
FROM (
SELECT pk, count(*) as cnt
FROM outils.ft
JOIN outils.prod ON ST_INTERSECTS(prod.geom, ft.geom)
)
WHERE prod.pk = sub.pk;