nidus-sync/tools/insert-site-from-upload.sql

41 lines
1,000 B
MySQL
Raw Normal View History

-- This query is just a one-off to quickly get uploaded data turned into sites.
INSERT INTO site (
address_id,
created,
creator_id,
notes,
organization_id,
owner_name,
parcel_id,
tags,
version
)
SELECT DISTINCT ON (closest_address.id)
closest_address.id AS address_id,
fas.created,
fas.creator_id,
'' AS notes,
fas.organization_id,
'' AS owner_name,
containing_parcel.id AS parcel_id,
''::hstore AS tags,
1 AS version
FROM fileupload.flyover_aerial_service fas
CROSS JOIN LATERAL (
SELECT a.id
FROM address a
ORDER BY a.geom <-> fas.geom
LIMIT 1
) closest_address
CROSS JOIN LATERAL (
SELECT p.id
FROM parcel p
WHERE ST_Contains(p.geometry, fas.geom)
LIMIT 1
) containing_parcel
WHERE fas.geom IS NOT NULL
AND fas.deleted IS NULL
ORDER BY closest_address.id, fas.created ASC -- Keep the earliest created per address
ON CONFLICT (address_id) DO NOTHING; -- Skip if address already has a site