Changeset 431
- Timestamp:
- 11/05/22 11:29:15 (11 months ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/norgis_alkis_pp/postcreate.d/6_views_exp_csv.sql
r412 r431 18 18 -- 2017-12-06 Umbenennung von "x_classic2norgis.sql" nach "views_exp_csv.sql" 19 19 -- 2017-12-20 Beseitigung des Fehlers: Mehrere Adressen zur Person fuehren zu mehrfachen Zeilen (Wiederholung FlurstÃŒck und Flaeche ..) 20 -- Es wird je Perso on nur noch die "letzte" Adresse verwendet (subquery).20 -- Es wird je Person nur noch die "letzte" Adresse verwendet (subquery). 21 21 -- Der View "exp_csv_str" ist jetzt direkt als 4fach-UNION (2x2) codiert statt mit eingebettetem gespeicherten 2fach-Union. 22 22 -- Hauptvorteil: Keine undurchsichtigen AbhÀngigkeiten. Ist auch etwas schneller. 23 23 -- 2017-12-20 Suche (Sortierung) 'letzte Adresse' nach "beginnt" statt nach "gml_id" 24 -- 2018-11-09 Umstellung auf Full-Schema 24 -- 2018-11-06 Beginn der Umstellung auf Full-Schema (derzeit DEV, gdal 2.4) 25 -- 2019-04-03 Schema variabel machen: :"alkis_schema", :"postgis_schema" 26 -- 2019-05-08 Schema auch in Subquery 27 -- 2020-02-20 Ersetzen des View "alkis_wertearten" (Simulation der alten zentralen Key-Value-Tabelle) durch einzelne SchlÃŒsseltabellen. 28 -- 2022-11-02 Auskommentierte JOIN ÃŒber "alkis_wertearten" entgÃŒltig entfernt, 29 -- Spalte "gsgml" (ax_buchungsstelle.gml_id) hinzugefÃŒgt. Ist Filter bei Aufruf von "alkisexport.php" aus "alkisgsnw.php". 30 -- Bei "Recht an": Filter fÃŒr dienende BS, Werte aus herrschenden BS. 25 31 26 32 -- ToDo: … … 37 43 -- Der WMS "Flurstuecke Kommunal" (aus View "st_flurst[gkz][e|r]") wird langsam, wenn er in einer kreisweiten Datenbank ausgefÃŒhrt wird. 38 44 -- Das Filter-Feld benötigt einen Index: 39 DROP INDEX if exists ax_person_nname;45 DROP INDEX if exists :"alkis_schema".ax_person_nname; 40 46 CREATE INDEX ax_person_nname 41 ON ax_person USING btree (nachnameoderfirma COLLATE pg_catalog."default");47 ON :"alkis_schema".ax_person USING btree (nachnameoderfirma COLLATE pg_catalog."default"); 42 48 43 49 … … 58 64 -- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 59 65 60 DROP VIEW IF EXISTS exp_csv;61 CREATE OR REPLACE VIEW exp_csv66 DROP VIEW IF EXISTS :"alkis_schema".exp_csv; 67 CREATE OR REPLACE VIEW :"alkis_schema".exp_csv 62 68 AS 63 69 SELECT -- Fall: einfache Buchung (ohne "Recht an") … … 75 81 z.bezeichnung AS beznam, -- GB-Bezirks-Name 76 82 -- B u c h u n g s s t e l l e (GrundstÃŒck) 83 s.gml_id AS gsgml, -- möglicher Filter GrundstÃŒck-GML-ID 77 84 s.laufendenummer AS bu_lfd, -- BVNR 78 85 '=' || s.zaehler || '/' || s.nenner AS bu_ant, -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') … … 99 106 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 100 107 a.bestimmungsland AS land 101 FROMax_flurstueck f -- FlurstÃŒck102 JOIN ax_gemarkung g -- entschlÃŒsseln108 FROM :"alkis_schema".ax_flurstueck f -- FlurstÃŒck 109 JOIN :"alkis_schema".ax_gemarkung g -- entschlÃŒsseln 103 110 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 104 JOIN ax_buchungsstelle s -- FS >istGebucht> Buchungstelle111 JOIN :"alkis_schema".ax_buchungsstelle s -- FS >istGebucht> Buchungstelle 105 112 ON f.istgebucht = s.gml_id 106 JOIN ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt113 JOIN :"alkis_schema".ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt 107 114 ON gb.gml_id = s.istbestandteilvon 108 JOIN ax_buchungsblattbezirk z115 JOIN :"alkis_schema".ax_buchungsblattbezirk z 109 116 ON gb.land=z.land AND gb.bezirk=z.bezirk 110 JOIN ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum117 JOIN :"alkis_schema".ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum 111 118 ON gb.gml_id = nn.istbestandteilvon 112 JOIN ax_person p -- NamNum >benennt> Person119 JOIN :"alkis_schema".ax_person p -- NamNum >benennt> Person 113 120 ON p.gml_id = nn.benennt 114 LEFT JOIN ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden115 ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)121 LEFT JOIN :"alkis_schema".ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden 122 ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1) 116 123 -- E n t s c h l ÃŒ s s e l n: 117 --LEFT JOIN alkis_wertearten wp ON cast(p.anrede AS character varying) = wp.k AND wp.element = 'ax_person' AND wp.bezeichnung = 'anrede' 118 LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert 119 --LEFT JOIN alkis_wertearten wb ON cast(s.buchungsart AS character varying) = wb.k AND wb.element = 'ax_buchungsstelle' AND wb.bezeichnung = 'buchungsart' 120 LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 124 LEFT JOIN :"alkis_schema".ax_anrede_person wp -- EntschlÃŒsseln "Person - Anrede" 125 ON p.anrede = wp.wert 126 LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart" 127 ON s.buchungsart = wb.wert -- wb.beschreibung 128 121 129 -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 122 130 -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". … … 124 132 LEFT JOIN 125 133 ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 126 FROM ax_namensnummer r127 JOIN ax_buchungsblatt gr134 FROM :"alkis_schema".ax_namensnummer r 135 JOIN :"alkis_schema".ax_buchungsblatt gr 128 136 ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 129 --LEFT JOIN alkis_wertearten wr ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft' 130 LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert 137 LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr 138 ON r.artderrechtsgemeinschaft = wr.wert 139 131 140 WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 132 141 ON rg.gml_id = gb.gml_id -- zum GB … … 149 158 z.bezeichnung AS beznam, -- GB-Bezirks-Name 150 159 -- B u c h u n g s s t e l l e (GrundstÃŒck) 160 dien.gml_id AS gsgml, -- 2022-11-02: möglicher Filter GrundstÃŒck-GML-ID (dienende Buchung) 151 161 s.laufendenummer AS bu_lfd, -- BVNR 152 162 '=' || s.zaehler || '/' || s.nenner AS bu_ant, -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') … … 173 183 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 174 184 a.bestimmungsland AS land 175 FROM ax_flurstueck f -- FlurstÃŒck176 JOIN ax_gemarkung g -- entschlÃŒsseln185 FROM :"alkis_schema".ax_flurstueck f -- FlurstÃŒck 186 JOIN :"alkis_schema".ax_gemarkung g -- entschlÃŒsseln 177 187 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 178 188 -- FS >istGebucht> Buchungstelle <an< Buchungstelle 179 189 -- Variante mit 2 Buchungs-Stellen (Recht An) 180 JOIN ax_buchungsstelle dien -- dienende Buchung190 JOIN :"alkis_schema".ax_buchungsstelle dien -- dienende Buchung 181 191 ON f.istgebucht = dien.gml_id 182 JOIN ax_buchungsstelle s -- herrschende Buchung183 ON dien.gml_id = ANY (s.an) -- hat Recht an184 JOIN ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt192 JOIN :"alkis_schema".ax_buchungsstelle s -- herrschende Buchung 193 ON dien.gml_id = ANY (s.an) -- hat Recht an 194 JOIN :"alkis_schema".ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt 185 195 ON gb.gml_id = s.istbestandteilvon 186 JOIN ax_buchungsblattbezirk z196 JOIN :"alkis_schema".ax_buchungsblattbezirk z 187 197 ON gb.land=z.land AND gb.bezirk=z.bezirk 188 JOIN ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum198 JOIN :"alkis_schema".ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum 189 199 ON gb.gml_id = nn.istbestandteilvon 190 JOIN ax_person p -- NamNum >benennt> Person200 JOIN :"alkis_schema".ax_person p -- NamNum >benennt> Person 191 201 ON p.gml_id = nn.benennt 192 LEFT JOIN ax_anschrift a-- nur die "letzte" Anschrift zur Person verwenden193 ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)202 LEFT JOIN :"alkis_schema".ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden 203 ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1) 194 204 -- E n t s c h l ÃŒ s s e l n: 195 LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert 196 LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 205 LEFT JOIN :"alkis_schema".ax_anrede_person wp -- EntschlÃŒsseln "Person - Anrede" 206 ON p.anrede = wp.wert 207 LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart" 208 ON s.buchungsart = wb.wert 197 209 LEFT JOIN 198 210 ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 199 FROM ax_namensnummer r200 JOIN ax_buchungsblatt gr211 FROM :"alkis_schema".ax_namensnummer r 212 JOIN :"alkis_schema".ax_buchungsblatt gr 201 213 ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 202 LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert 214 LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr 215 ON r.artderrechtsgemeinschaft = wr.wert 216 203 217 WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 204 218 ON rg.gml_id = gb.gml_id -- zum GB … … 207 221 208 222 ORDER BY fs_kennz, -- f.flurstueckskennzeichen, 223 -- fsgml, 209 224 gb_bezirk, -- gb.bezirk, 210 225 gb_blatt, -- gb.buchungsblattnummermitbuchstabenerweiterung, … … 212 227 nam_lfd; -- nn.laufendenummernachdin1421 213 228 214 COMMENT ON VIEW exp_csv229 COMMENT ON VIEW :"alkis_schema".exp_csv 215 230 IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Generelle Struktur. FÃŒr eine bestimmte gml_id noch den Filter setzen.'; 216 231 … … 221 236 -- um nur die FlurstÃŒcke zu bekommen, die an einer StraÃe liegen. 222 237 223 DROP VIEW IF EXISTS exp_csv_str;224 225 CREATE OR REPLACE VIEW exp_csv_str238 DROP VIEW IF EXISTS :"alkis_schema".exp_csv_str; 239 240 CREATE OR REPLACE VIEW :"alkis_schema".exp_csv_str 226 241 AS -- Version mit 4fach-UNION (2x2 FÀlle) statt eingebauter View "flst_an_strasse" 227 242 SELECT -- Fall 1: einfache Buchung (ohne Recht an) // Lagebezeichnung MIT Hausnummer … … 265 280 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 266 281 a.bestimmungsland AS land 267 FROM ax_flurstueck f -- FlurstÃŒck282 FROM :"alkis_schema".ax_flurstueck f -- FlurstÃŒck 268 283 -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 269 JOIN ax_lagebezeichnungmithausnummer lm -- Lage MIT284 JOIN :"alkis_schema".ax_lagebezeichnungmithausnummer lm -- Lage MIT 270 285 ON lm.gml_id = ANY (f.weistauf) 271 JOIN ax_lagebezeichnungkatalogeintrag sm286 JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag sm 272 287 ON lm.land=sm.land AND lm.regierungsbezirk=sm.regierungsbezirk AND lm.kreis=sm.kreis AND lm.gemeinde=sm.gemeinde AND lm.lage=sm.lage 273 JOIN ax_gemarkung g -- entschlÃŒsseln288 JOIN :"alkis_schema".ax_gemarkung g -- entschlÃŒsseln 274 289 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 275 JOIN ax_buchungsstelle s -- FS >istGebucht> Buchungstelle290 JOIN :"alkis_schema".ax_buchungsstelle s -- FS >istGebucht> Buchungstelle 276 291 ON f.istgebucht = s.gml_id 277 JOIN ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt292 JOIN :"alkis_schema".ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt 278 293 ON gb.gml_id = s.istbestandteilvon 279 JOIN ax_buchungsblattbezirk z294 JOIN :"alkis_schema".ax_buchungsblattbezirk z 280 295 ON gb.land=z.land AND gb.bezirk=z.bezirk 281 JOIN ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum296 JOIN :"alkis_schema".ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum 282 297 ON gb.gml_id = nn.istbestandteilvon 283 JOIN ax_person p -- NamNum >benennt> Person298 JOIN :"alkis_schema".ax_person p -- NamNum >benennt> Person 284 299 ON p.gml_id = nn.benennt 285 LEFT JOIN ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden286 ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)300 LEFT JOIN :"alkis_schema".ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden 301 ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1) 287 302 -- E n t s c h l ÃŒ s s e l n: 288 LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert 289 LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 303 LEFT JOIN :"alkis_schema".ax_anrede_person wp -- EntschlÃŒsseln "Person - Anrede" 304 ON p.anrede = wp.wert 305 LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart" 306 ON s.buchungsart = wb.wert 307 290 308 -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 291 309 -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". … … 293 311 LEFT JOIN 294 312 ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 295 FROM ax_namensnummer r296 JOIN ax_buchungsblatt gr313 FROM :"alkis_schema".ax_namensnummer r 314 JOIN :"alkis_schema".ax_buchungsblatt gr 297 315 ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 298 LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert 316 LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr 317 ON r.artderrechtsgemeinschaft = wr.wert 318 299 319 WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 300 320 ON rg.gml_id = gb.gml_id -- zum GB … … 343 363 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 344 364 a.bestimmungsland AS land 345 FROM ax_flurstueck f -- FlurstÃŒck365 FROM :"alkis_schema".ax_flurstueck f -- FlurstÃŒck 346 366 -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 347 JOIN ax_lagebezeichnungmithausnummer lm -- Lage MIT367 JOIN :"alkis_schema".ax_lagebezeichnungmithausnummer lm -- Lage MIT 348 368 ON lm.gml_id = ANY (f.weistauf) 349 JOIN ax_lagebezeichnungkatalogeintrag sm369 JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag sm 350 370 ON lm.land=sm.land AND lm.regierungsbezirk=sm.regierungsbezirk AND lm.kreis=sm.kreis AND lm.gemeinde=sm.gemeinde AND lm.lage=sm.lage 351 JOIN ax_gemarkung g -- entschlÃŒsseln371 JOIN :"alkis_schema".ax_gemarkung g -- entschlÃŒsseln 352 372 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 353 373 -- FS >istGebucht> Buchungstelle <an< Buchungstelle 354 374 -- Variante mit 2 Buchungs-Stellen (Recht An) 355 JOIN ax_buchungsstelle dien -- dienende Buchung375 JOIN :"alkis_schema".ax_buchungsstelle dien -- dienende Buchung 356 376 ON f.istgebucht = dien.gml_id 357 JOIN ax_buchungsstelle s -- herrschende Buchung377 JOIN :"alkis_schema".ax_buchungsstelle s -- herrschende Buchung 358 378 ON dien.gml_id = ANY (s.an) -- hat Recht an 359 JOIN ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt379 JOIN :"alkis_schema".ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt 360 380 ON gb.gml_id = s.istbestandteilvon 361 JOIN ax_buchungsblattbezirk z381 JOIN :"alkis_schema".ax_buchungsblattbezirk z 362 382 ON gb.land=z.land AND gb.bezirk=z.bezirk 363 JOIN ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum383 JOIN :"alkis_schema".ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum 364 384 ON gb.gml_id = nn.istbestandteilvon 365 JOIN ax_person p -- NamNum >benennt> Person385 JOIN :"alkis_schema".ax_person p -- NamNum >benennt> Person 366 386 ON p.gml_id = nn.benennt 367 LEFT JOIN ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden368 ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)387 LEFT JOIN :"alkis_schema".ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden 388 ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1) 369 389 -- E n t s c h l ÃŒ s s e l n: 370 LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert 371 LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 390 LEFT JOIN :"alkis_schema".ax_anrede_person wp -- EntschlÃŒsseln "Person - Anrede" 391 ON p.anrede = wp.wert 392 LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart" 393 ON s.buchungsart = wb.wert 372 394 LEFT JOIN 373 395 ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 374 FROM ax_namensnummer r375 JOIN ax_buchungsblatt gr396 FROM :"alkis_schema".ax_namensnummer r 397 JOIN :"alkis_schema".ax_buchungsblatt gr 376 398 ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 377 LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert 399 LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr 400 ON r.artderrechtsgemeinschaft = wr.wert 378 401 WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 379 402 ON rg.gml_id = gb.gml_id -- zum GB … … 423 446 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 424 447 a.bestimmungsland AS land 425 FROM ax_flurstueck f -- FlurstÃŒck448 FROM :"alkis_schema".ax_flurstueck f -- FlurstÃŒck 426 449 -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 427 JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE450 JOIN :"alkis_schema".ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 428 451 ON lo.gml_id = ANY (f.zeigtauf) 429 JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE452 JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE 430 453 ON lo.land=so.land AND lo.regierungsbezirk=so.regierungsbezirk AND lo.kreis=so.kreis AND lo.gemeinde=so.gemeinde AND lo.lage=so.lage 431 JOIN ax_gemarkung g -- entschlÃŒsseln454 JOIN :"alkis_schema".ax_gemarkung g -- entschlÃŒsseln 432 455 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 433 JOIN ax_buchungsstelle s -- FS >istGebucht> Buchungstelle456 JOIN :"alkis_schema".ax_buchungsstelle s -- FS >istGebucht> Buchungstelle 434 457 ON f.istgebucht = s.gml_id 435 JOIN ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt458 JOIN :"alkis_schema".ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt 436 459 ON gb.gml_id = s.istbestandteilvon 437 JOIN ax_buchungsblattbezirk z460 JOIN :"alkis_schema".ax_buchungsblattbezirk z 438 461 ON gb.land=z.land AND gb.bezirk=z.bezirk 439 JOIN ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum462 JOIN :"alkis_schema".ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum 440 463 ON gb.gml_id = nn.istbestandteilvon 441 JOIN ax_person p -- NamNum >benennt> Person464 JOIN :"alkis_schema".ax_person p -- NamNum >benennt> Person 442 465 ON p.gml_id = nn.benennt 443 LEFT JOIN ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden444 ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)466 LEFT JOIN :"alkis_schema".ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden 467 ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1) 445 468 -- E n t s c h l ÃŒ s s e l n: 446 LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert 447 LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 469 LEFT JOIN :"alkis_schema".ax_anrede_person wp -- EntschlÃŒsseln "Person - Anrede" 470 ON p.anrede = wp.wert 471 LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart" 472 ON s.buchungsart = wb.wert 473 448 474 -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 449 475 -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". … … 451 477 LEFT JOIN 452 478 ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 453 FROM ax_namensnummer r454 JOIN ax_buchungsblatt gr479 FROM :"alkis_schema".ax_namensnummer r 480 JOIN :"alkis_schema".ax_buchungsblatt gr 455 481 ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 456 LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert 482 LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr 483 ON r.artderrechtsgemeinschaft = wr.wert 484 457 485 WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 458 486 ON rg.gml_id = gb.gml_id -- zum GB … … 501 529 a.strasse, a.hausnummer, -- Anschriftenzeile 2: StraÃe+HsNr 502 530 a.bestimmungsland AS land 503 FROM ax_flurstueck f -- FlurstÃŒck531 FROM :"alkis_schema".ax_flurstueck f -- FlurstÃŒck 504 532 -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 505 JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE533 JOIN :"alkis_schema".ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 506 534 ON lo.gml_id = ANY (f.zeigtauf) 507 JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE535 JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE 508 536 ON lo.land=so.land AND lo.regierungsbezirk=so.regierungsbezirk AND lo.kreis=so.kreis AND lo.gemeinde=so.gemeinde AND lo.lage=so.lage 509 JOIN ax_gemarkung g -- entschlÃŒsseln537 JOIN :"alkis_schema".ax_gemarkung g -- entschlÃŒsseln 510 538 ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 511 539 -- FS >istGebucht> Buchungstelle <an< Buchungstelle 512 540 -- Variante mit 2 Buchungs-Stellen (Recht An) 513 JOIN ax_buchungsstelle dien -- dienende Buchung541 JOIN :"alkis_schema".ax_buchungsstelle dien -- dienende Buchung 514 542 ON f.istgebucht = dien.gml_id 515 JOIN ax_buchungsstelle s -- herrschende Buchung543 JOIN :"alkis_schema".ax_buchungsstelle s -- herrschende Buchung 516 544 ON dien.gml_id = ANY (s.an) -- hat Recht an 517 JOIN ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt545 JOIN :"alkis_schema".ax_buchungsblatt gb -- Buchung >istBestandteilVon> Grundbuchblatt 518 546 ON gb.gml_id = s.istbestandteilvon 519 JOIN ax_buchungsblattbezirk z547 JOIN :"alkis_schema".ax_buchungsblattbezirk z 520 548 ON gb.land=z.land AND gb.bezirk=z.bezirk 521 JOIN ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum549 JOIN :"alkis_schema".ax_namensnummer nn -- Blatt <istBestandteilVon< NamNum 522 550 ON gb.gml_id = nn.istbestandteilvon 523 JOIN ax_person p -- NamNum >benennt> Person551 JOIN :"alkis_schema".ax_person p -- NamNum >benennt> Person 524 552 ON p.gml_id = nn.benennt 525 LEFT JOIN ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden526 ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)553 LEFT JOIN :"alkis_schema".ax_anschrift a -- nur die "letzte" Anschrift zur Person verwenden 554 ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1) 527 555 -- E n t s c h l ÃŒ s s e l n: 528 LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert 529 LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert 556 LEFT JOIN :"alkis_schema".ax_anrede_person wp -- EntschlÃŒsseln "Person - Anrede" 557 ON p.anrede = wp.wert 558 LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart" 559 ON s.buchungsart = wb.wert 530 560 LEFT JOIN 531 561 ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 532 FROM ax_namensnummer r533 JOIN ax_buchungsblatt gr562 FROM :"alkis_schema".ax_namensnummer r 563 JOIN :"alkis_schema".ax_buchungsblatt gr 534 564 ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 535 LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert 565 LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr 566 ON r.artderrechtsgemeinschaft = wr.wert 567 536 568 WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 537 569 ON rg.gml_id = gb.gml_id -- zum GB … … 545 577 nam_lfd; -- nn.laufendenummernachdin1421 546 578 547 COMMENT ON VIEW exp_csv_str579 COMMENT ON VIEW :"alkis_schema".exp_csv_str 548 580 IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Liefert nur FlurstÃŒcke, die eine Lagebezeichnung MIT/OHNE Hausnummer haben. Dazu noch den Filter auf GML-ID der StraÃentabelle setzen.'; 549 581 550 582 -- Berechtigung 551 GRANT SELECT ON TABLE public.exp_csv TO mb27; 552 GRANT SELECT ON TABLE public.exp_csv_str TO mb27; 553 583 GRANT SELECT ON TABLE :"alkis_schema".exp_csv TO mb27; 584 GRANT SELECT ON TABLE :"alkis_schema".exp_csv_str TO mb27; 585 586 GRANT SELECT ON TABLE :"alkis_schema".exp_csv TO mb28; 587 GRANT SELECT ON TABLE :"alkis_schema".exp_csv_str TO mb28; 588 589 /* Alle Views eintragen auf DB-Server: 590 for gkz in 070 120 130 140 150 200 210 240 250 260 270 290 300 320 330 340 418 430 ; do echo $gkz ; psql -d alkis0$gkz -v alkis_schema=public -f /data/alkis-import/postcreate.d/6_views_exp_csv.sql ; done 591 */ 554 592 -- Ende -- -
trunk/info/info/alkisn/alkisbauwerk.php
r430 r431 28 28 2022-02-23 Neue Bauwerks-Typen 10-12 29 29 2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden 30 2022-11-02 Fehlerkorrektur: break in switch 30 31 31 32 ToDo: … … 585 586 tab_zeile('Lage zur Erdoberfläche', $rowk["lagezurerdoberflaeche"], $bes, '', $dok); 586 587 tab_zeile('Speicherinhalt', $rowk["speicherinhalt"], htmlentities($rowk["spbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["spdok"], ENT_QUOTES, "UTF-8")); 588 break; 587 589 case $btyp_hist: // 10 588 590 tab_zeile('Archäologischer Typ', $rowk["archaeologischertyp"], $bes, '', $dok); -
trunk/info/info/alkisn/alkisexport.php
r430 r431 33 33 2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden 34 34 35 ToDo: 35 ToDo:. 36 36 - In den gespeicherten Views "exp_csv" und "exp_csv_str" den Fall Kataster-Amts-Mix berÃŒcksichtigen. 37 37 - Abruf FlurstÃŒck sollte auch mit "fskennz" (ggg-ff-zzz/nn) statt "gml-id" möglich sein 38 38 - In Dateiname den StraÃennamen statt der gmlid verwenden? (Umlaute?) 39 39 - in alkislage.php fÃŒr den Typ "ohne Haunummer" den Export mit strasse und haus=o verlinken 40 ToDo: FÃŒr PHP 8.1: connection angeben bei pg_prpare und pg_execute41 40 */ 42 41 … … 197 196 break; 198 197 199 case 'buchung': // ax_buchungsstelle.gml_id 200 $sql="SELECT * FROM exp_csv WHERE gsgml = $1 "; 198 case 'buchung': // ax_buchungsstelle.gml_id (bei "Recht an" die herrschende Buchung) 199 $sql="SELECT * FROM exp_csv WHERE gsgml = $1 "; // 2022-11-02: gsgml im View eingefÃŒgt 201 200 break; 202 201 -
trunk/info/info/alkisn/alkisgebaeudenw.php
r430 r431 19 19 2022-02-17 Neue Bauwerks-Typen 20 20 2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden 21 2022-11-02 Fehlerkorrektur $gzus 21 22 */ 22 23 … … 246 247 echo "</td>\n\t<td>"; 247 248 if ($gzus != "") { 248 echo DsKy( gzus, 'Zustand-*').$gzustand;249 echo DsKy($gzus, 'Zustand-*').$gzustand; 249 250 } 250 251 echo "</td>";
Note: See TracChangeset
for help on using the changeset viewer.