Podzapytania SQL

0

Witam, mam pewien problem z połączeniem 3 tabel: blok_2.grid, blok_2.budynki, blok_2.drogi. Mianowicie zadanie polega na podaniu ilości budynków mieszkalnych (z tabeli blok_2.budynki), które znajdują się w odległości powyżej 100m od najbliższej drogi utwardzonej (z tabeli blok_2.drogi) a następnie uzupełnić tym tabelę blok_2.grid, która zawiera ID oraz geom oczka siatki - tak aby ta ilość budynków pojawiła się w danym oczku siatki. Udało mi się wykonać zapytanie wyszukujące budynki mieszkalne w odległości powyżej 100m od drogi, ale nie wiem jak wykorzystać to jako podzapytanie do wypełnienia tabeli grid.

select id_b, min(ST_Distance(geom_b, geom_d)) as odleglosc
from
blok_2.budynki,
blok_2.drogi
where
typ_b = 'mieszkalny'
and
typ_d = 'droga_utwardzona'
and
ST_Distance(geom_b, geom_d) > 100
group by id_b

a tu próba użycia tego jako podzapytanie:
update blok_2.grid
set
pow_miesz_100 = coalesce((select pow from
(select id_g as idb, count(*) as pow from blok_2.budynki,
(select min(ST_Distance(geom_b, geom_d)) as odleglosc
from
blok_2.budynki,
blok_2.drogi
where
typ_b = 'mieszkalny'
and
typ_d = 'droga_utwardzona'
and
ST_Distance(geom_b, geom_d) > 100
group by id_b) as a
where
ST_Intersects(geom_g, geom_b)
group by id_g) as foo
where id_g=idb),0);

Liczę na Waszą pomoc! :)

1

Skoro po postgreSQL, to możesz zrobić -= tak:

UPDATE tabela SET pole = ... FROM (twoje podzapytanie) sub WHERE tabela.id=sub.id

1 użytkowników online, w tym zalogowanych: 0, gości: 1