JOINS

Normalt får I kun brug for:

  • INNER JOIN (default)
  • LEFT JOIN
  • CROSS JOIN (Sjældent)

Alt text

Hent BBR bygninger med kendte anvendelseskoder:

SELECT
  byg.bygning_id,
  byg.bygningsnr,
  byg.opfoerelse_aar,
  kode.byg_anvendelse_tekst
FROM
  kursus.co40100t byg JOIN
  legeplads.bygningsanvendelse kode ON (byg.byg_anvend_kode = kode.byg_anvend_kode)
LIMIT 10

Hent alle BBR bygninger (også dem med ukendte anvendelseskoder):

SELECT
  byg.bygning_id,
  byg.bygningsnr,
  byg.opfoerelse_aar,
  kode.byg_anvendelse_tekst
FROM
  kursus.co40100t byg LEFT JOIN
  legeplads.bygningsanvendelse kode ON (byg.byg_anvend_kode = kode.byg_anvend_kode)
LIMIT 10

Optæl bygninger med kendte anvendelseskoder:

SELECT COUNT(1)
FROM
  kursus.co40100t byg JOIN
  legeplads.bygningsanvendelse kode ON (byg.byg_anvend_kode = kode.byg_anvend_kode)
Optæl bygninger med kendte anvendelseskoder:
SELECT COUNT(1)
FROM
  kursus.co40100t byg LEFT JOIN
  legeplads.bygningsanvendelse kode ON (byg.byg_anvend_kode = kode.byg_anvend_kode)

Selects uden FROM kan med fordel benyttes til at oversætte kodeværdier til tekster (hvis man mangler kodelisten). Her anvendes en CTE som tabel

WITH lookup_ja_nej AS
  (SELECT '0'::text AS kode, 'Bygning er under minimum'::text AS tekst UNION
   SELECT '1'        , 'Bygning er ikke under minimum')
SELECT
  byg.fot_id,
  COALESCE(kode.tekst, '<under minimums kode er udefineret!!')
FROM
  kursus.bygning byg LEFT JOIN
  lookup_ja_nej kode ON (byg.under_min = kode.kode)
LIMIT 100

Bemærk:

  • Brugen af konstant table (flere rækker vha. UNION keyword)
  • Type casting ::text
  • LEFT JOIN for at få alle bygninger med
  • COALESCE for at give meningsfuld tekst til NULL values

Berig dine egne data med spatialle joins

SELECT
   a.ogc_fid,
   a.wkb_geometry,
   a.adresse,
   lr.lokalraad,
   lr.hjemmeside
FROM raw_data.adresser_font_point a
JOIN raw_data.lokalraad lr
ON (ST_Contains(lr.geom,a.wkb_geometry))

Øvelse

Prøv at skrive JOINS på nogle af jeres egne data

results matching ""

    No results matching ""