Snažím sa aktualizovať celkové príjmy na kancelárie sa nachádza v rôznych oblastiach. Na geografie sú definované v kruhu a mnohouholníkov, ktoré sú oba v tvarov.tvar stĺpci.
Keď som spustite dotaz nižšie, MySQL hody "R_INVALID_GROUP_FUNC_USE: Neplatný používanie skupinovej funkcie"
Snažil som sa prispôsobiť túto odpoveď, ale nemôžem prísť na to, logika s podmienené pripojiť a geopriestorové dáta -- to nie je tak jednoduché, ako pridanie poddotaz s AK klauzula. (Alebo je?)
Pre kontexte, som asi 350 geografie a 150,000 kancelárie.
UPDATE
shapes s
LEFT JOIN offices ON (
CASE
WHEN s.type = 'circle' THEN ST_Distance_Sphere(o.coords, s.shape) < s.radius
ELSE ST_CONTAINS(s.shape, o.coords)
END
)
SET
s.totalRevenue = SUM(o.revenue);
AKTUALIZÁCIA:
To funguje, ale je to pomalé a mätúce. Je tam rýchlejší/viac výstižným spôsobom?
UPDATE
shapes s
LEFT JOIN (
SELECT
t.shape_id,
SUM(g.revenue) revenue
FROM
shapes t
LEFT JOIN offices o ON (
CASE
WHEN t.type = 'circle' THEN ST_Distance_Sphere(o.coords, t.shape) < t.radius
ELSE ST_CONTAINS(t.shape, o.coords)
END
)
GROUP BY
t.shape_id
) b ON s.shape_id = b.shape_id
SET
s.totalRevenue = b.revenue;