Changeset 431 for trunk


Ignore:
Timestamp:
11/05/22 11:29:15 (17 months ago)
Author:
frank.jaeger
Message:

kleine Fehlerkorrekturen an der Auskunft

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/norgis_alkis_pp/postcreate.d/6_views_exp_csv.sql

    r412 r431  
    1818--  2017-12-06 Umbenennung von "x_classic2norgis.sql" nach "views_exp_csv.sql" 
    1919--  2017-12-20 Beseitigung des Fehlers: Mehrere Adressen zur Person fuehren zu mehrfachen Zeilen (Wiederholung FlurstÃŒck und Flaeche ..) 
    20 --             Es wird je Persoon nur noch die "letzte" Adresse verwendet (subquery). 
     20--             Es wird je Person nur noch die "letzte" Adresse verwendet (subquery). 
    2121--             Der View "exp_csv_str" ist jetzt direkt als 4fach-UNION (2x2) codiert statt mit eingebettetem gespeicherten 2fach-Union. 
    2222--             Hauptvorteil: Keine undurchsichtigen AbhÀngigkeiten. Ist auch etwas schneller. 
    2323--  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. 
    2531 
    2632-- ToDo: 
     
    3743-- Der WMS "Flurstuecke Kommunal" (aus View "st_flurst[gkz][e|r]") wird langsam, wenn er in einer kreisweiten Datenbank ausgefÃŒhrt wird. 
    3844-- Das Filter-Feld benötigt einen Index: 
    39 DROP INDEX if exists ax_person_nname; 
     45DROP INDEX if exists :"alkis_schema".ax_person_nname; 
    4046CREATE 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"); 
    4248 
    4349 
     
    5864-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 
    5965 
    60 DROP VIEW IF EXISTS exp_csv; 
    61 CREATE OR REPLACE VIEW exp_csv 
     66DROP VIEW IF EXISTS :"alkis_schema".exp_csv; 
     67CREATE OR REPLACE VIEW :"alkis_schema".exp_csv 
    6268AS 
    6369 SELECT -- Fall: einfache Buchung (ohne "Recht an") 
     
    7581    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
    7682  -- 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 
    7784    s.laufendenummer                     AS bu_lfd,      -- BVNR 
    7885    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     
    99106    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    100107    a.bestimmungsland                    AS land 
    101    FROM ax_flurstueck    f               -- FlurstÃŒck 
    102   JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     108  FROM :"alkis_schema".ax_flurstueck    f               -- FlurstÃŒck 
     109  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln 
    103110    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    104   JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
     111  JOIN :"alkis_schema".ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
    105112    ON f.istgebucht = s.gml_id 
    106   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     113  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    107114    ON gb.gml_id = s.istbestandteilvon 
    108   JOIN ax_buchungsblattbezirk z  
     115  JOIN :"alkis_schema".ax_buchungsblattbezirk z  
    109116    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    110   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     117  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    111118    ON gb.gml_id = nn.istbestandteilvon 
    112   JOIN ax_person p                      -- NamNum >benennt> Person  
     119  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person  
    113120    ON p.gml_id = nn.benennt 
    114   LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
    115     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) 
    116123  -- 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   
    121129  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
    122130  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
     
    124132  LEFT JOIN 
    125133   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 
    126        FROM ax_namensnummer r  
    127        JOIN ax_buchungsblatt gr 
     134       FROM :"alkis_schema".ax_namensnummer r  
     135       JOIN :"alkis_schema".ax_buchungsblatt gr 
    128136         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 
    131140      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    132141   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    149158    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
    150159  -- 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) 
    151161    s.laufendenummer                     AS bu_lfd,      -- BVNR 
    152162    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     
    173183    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    174184    a.bestimmungsland                    AS land 
    175   FROM ax_flurstueck f                  -- FlurstÃŒck 
    176   JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     185  FROM :"alkis_schema".ax_flurstueck f                  -- FlurstÃŒck 
     186  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln 
    177187    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    178188  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle 
    179189 -- Variante mit 2 Buchungs-Stellen (Recht An) 
    180   JOIN ax_buchungsstelle dien           -- dienende Buchung 
     190  JOIN :"alkis_schema".ax_buchungsstelle dien           -- dienende Buchung 
    181191    ON f.istgebucht = dien.gml_id 
    182   JOIN ax_buchungsstelle s              -- herrschende Buchung 
    183     ON dien.gml_id = ANY (s.an)         -- hat Recht an 
    184   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     192  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 
    185195    ON gb.gml_id = s.istbestandteilvon 
    186   JOIN ax_buchungsblattbezirk z  
     196  JOIN :"alkis_schema".ax_buchungsblattbezirk z  
    187197    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    188   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     198  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    189199    ON gb.gml_id = nn.istbestandteilvon 
    190   JOIN ax_person p                      -- NamNum >benennt> Person  
     200  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person  
    191201    ON p.gml_id = nn.benennt 
    192   LEFT JOIN ax_anschrift a               -- nur die "letzte" Anschrift zur Person verwenden 
    193     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) 
    194204  -- 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 
    197209  LEFT JOIN 
    198210   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 
    199        FROM ax_namensnummer r  
    200        JOIN ax_buchungsblatt gr 
     211       FROM :"alkis_schema".ax_namensnummer r  
     212       JOIN :"alkis_schema".ax_buchungsblatt gr 
    201213         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                 
    203217      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    204218   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    207221 
    208222ORDER BY fs_kennz,   -- f.flurstueckskennzeichen,  
     223      -- fsgml,       
    209224         gb_bezirk,  -- gb.bezirk,  
    210225         gb_blatt,   -- gb.buchungsblattnummermitbuchstabenerweiterung, 
     
    212227         nam_lfd;    -- nn.laufendenummernachdin1421 
    213228 
    214 COMMENT ON VIEW exp_csv  
     229COMMENT ON VIEW :"alkis_schema".exp_csv  
    215230 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.'; 
    216231 
     
    221236-- um nur die FlurstÃŒcke zu bekommen, die an einer Straße liegen. 
    222237 
    223 DROP VIEW IF EXISTS exp_csv_str; 
    224  
    225 CREATE OR REPLACE VIEW exp_csv_str 
     238DROP VIEW IF EXISTS :"alkis_schema".exp_csv_str; 
     239 
     240CREATE OR REPLACE VIEW :"alkis_schema".exp_csv_str 
    226241AS      -- Version mit 4fach-UNION (2x2 FÀlle) statt eingebauter View "flst_an_strasse" 
    227242 SELECT -- Fall 1: einfache Buchung (ohne Recht an)  // Lagebezeichnung MIT Hausnummer 
     
    265280    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    266281    a.bestimmungsland                    AS land 
    267   FROM ax_flurstueck    f               -- FlurstÃŒck 
     282  FROM :"alkis_schema".ax_flurstueck    f               -- FlurstÃŒck 
    268283  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
    269   JOIN ax_lagebezeichnungmithausnummer lm -- Lage MIT 
     284  JOIN :"alkis_schema".ax_lagebezeichnungmithausnummer lm -- Lage MIT 
    270285    ON lm.gml_id = ANY (f.weistauf) 
    271   JOIN ax_lagebezeichnungkatalogeintrag sm 
     286  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag sm 
    272287   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ÃŒsseln 
     288   JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln 
    274289    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    275   JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
     290  JOIN :"alkis_schema".ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
    276291    ON f.istgebucht = s.gml_id 
    277   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     292  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    278293    ON gb.gml_id = s.istbestandteilvon 
    279   JOIN ax_buchungsblattbezirk z  
     294  JOIN :"alkis_schema".ax_buchungsblattbezirk z  
    280295    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    281   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     296  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    282297    ON gb.gml_id = nn.istbestandteilvon 
    283   JOIN ax_person p                      -- NamNum >benennt> Person  
     298  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person  
    284299    ON p.gml_id = nn.benennt 
    285   LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
    286     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) 
    287302  -- 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    
    290308  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
    291309  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
     
    293311  LEFT JOIN 
    294312   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 
    295        FROM ax_namensnummer r  
    296        JOIN ax_buchungsblatt gr 
     313       FROM :"alkis_schema".ax_namensnummer r  
     314       JOIN :"alkis_schema".ax_buchungsblatt gr 
    297315         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 
    299319      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    300320   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    343363    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    344364    a.bestimmungsland                    AS land 
    345   FROM ax_flurstueck f                  -- FlurstÃŒck 
     365  FROM :"alkis_schema".ax_flurstueck f                  -- FlurstÃŒck 
    346366  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
    347   JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
     367  JOIN :"alkis_schema".ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
    348368    ON lm.gml_id = ANY (f.weistauf) 
    349   JOIN ax_lagebezeichnungkatalogeintrag sm 
     369  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag sm 
    350370    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ÃŒsseln 
     371  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln 
    352372    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    353373  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle 
    354374 -- Variante mit 2 Buchungs-Stellen (Recht An) 
    355   JOIN ax_buchungsstelle dien           -- dienende Buchung 
     375  JOIN :"alkis_schema".ax_buchungsstelle dien           -- dienende Buchung 
    356376    ON f.istgebucht = dien.gml_id 
    357   JOIN ax_buchungsstelle s              -- herrschende Buchung 
     377  JOIN :"alkis_schema".ax_buchungsstelle s              -- herrschende Buchung 
    358378    ON dien.gml_id = ANY (s.an)         -- hat Recht an 
    359   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     379  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    360380    ON gb.gml_id = s.istbestandteilvon 
    361   JOIN ax_buchungsblattbezirk z  
     381  JOIN :"alkis_schema".ax_buchungsblattbezirk z  
    362382    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    363   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     383  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    364384    ON gb.gml_id = nn.istbestandteilvon 
    365   JOIN ax_person p                      -- NamNum >benennt> Person  
     385  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person  
    366386    ON p.gml_id = nn.benennt 
    367   LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
    368     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) 
    369389  -- 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 
    372394  LEFT JOIN 
    373395   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 
    374        FROM ax_namensnummer r  
    375        JOIN ax_buchungsblatt gr 
     396       FROM :"alkis_schema".ax_namensnummer r  
     397       JOIN :"alkis_schema".ax_buchungsblatt gr 
    376398         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 
    378401      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    379402   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    423446    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    424447    a.bestimmungsland                    AS land 
    425   FROM ax_flurstueck    f               -- FlurstÃŒck 
     448  FROM :"alkis_schema".ax_flurstueck    f               -- FlurstÃŒck 
    426449-- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
    427   JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
     450  JOIN :"alkis_schema".ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
    428451    ON lo.gml_id = ANY (f.zeigtauf) 
    429   JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
     452  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
    430453    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ÃŒsseln 
     454  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln 
    432455    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    433   JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
     456  JOIN :"alkis_schema".ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
    434457    ON f.istgebucht = s.gml_id 
    435   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     458  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    436459    ON gb.gml_id = s.istbestandteilvon 
    437   JOIN ax_buchungsblattbezirk z  
     460  JOIN :"alkis_schema".ax_buchungsblattbezirk z  
    438461    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    439   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     462  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    440463    ON gb.gml_id = nn.istbestandteilvon 
    441   JOIN ax_person p                      -- NamNum >benennt> Person  
     464  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person  
    442465    ON p.gml_id = nn.benennt 
    443   LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
    444     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) 
    445468  -- 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 
    448474  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
    449475  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
     
    451477  LEFT JOIN 
    452478   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 
    453        FROM ax_namensnummer r  
    454        JOIN ax_buchungsblatt gr 
     479       FROM :"alkis_schema".ax_namensnummer r  
     480       JOIN :"alkis_schema".ax_buchungsblatt gr 
    455481         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                 
    457485      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    458486   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    501529    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    502530    a.bestimmungsland                    AS land 
    503   FROM ax_flurstueck f                  -- FlurstÃŒck 
     531  FROM :"alkis_schema".ax_flurstueck f                  -- FlurstÃŒck 
    504532-- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
    505   JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
     533  JOIN :"alkis_schema".ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
    506534    ON lo.gml_id = ANY (f.zeigtauf) 
    507   JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
     535  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
    508536    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ÃŒsseln 
     537  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln 
    510538    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    511539  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle 
    512540 -- Variante mit 2 Buchungs-Stellen (Recht An) 
    513   JOIN ax_buchungsstelle dien           -- dienende Buchung 
     541  JOIN :"alkis_schema".ax_buchungsstelle dien           -- dienende Buchung 
    514542    ON f.istgebucht = dien.gml_id 
    515   JOIN ax_buchungsstelle s              -- herrschende Buchung 
     543  JOIN :"alkis_schema".ax_buchungsstelle s              -- herrschende Buchung 
    516544    ON dien.gml_id = ANY (s.an)         -- hat Recht an 
    517   JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     545  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    518546    ON gb.gml_id = s.istbestandteilvon 
    519   JOIN ax_buchungsblattbezirk z  
     547  JOIN :"alkis_schema".ax_buchungsblattbezirk z  
    520548    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    521   JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     549  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    522550    ON gb.gml_id = nn.istbestandteilvon 
    523   JOIN ax_person p                      -- NamNum >benennt> Person  
     551  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person  
    524552    ON p.gml_id = nn.benennt 
    525   LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
    526     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) 
    527555  -- 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 
    530560  LEFT JOIN 
    531561   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung 
    532        FROM ax_namensnummer r  
    533        JOIN ax_buchungsblatt gr 
     562       FROM :"alkis_schema".ax_namensnummer r  
     563       JOIN :"alkis_schema".ax_buchungsblatt gr 
    534564         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 
    536568      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    537569   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    545577         nam_lfd;    -- nn.laufendenummernachdin1421 
    546578 
    547 COMMENT ON VIEW exp_csv_str  
     579COMMENT ON VIEW :"alkis_schema".exp_csv_str  
    548580 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.'; 
    549581 
    550582-- 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*/ 
    554592-- Ende -- 
  • trunk/info/info/alkisn/alkisbauwerk.php

    r430 r431  
    2828        2022-02-23 Neue Bauwerks-Typen 10-12 
    2929        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 
    3031 
    3132ToDo: 
     
    585586                                tab_zeile('Lage zur Erdoberfl&auml;che', $rowk["lagezurerdoberflaeche"], $bes, '', $dok); 
    586587                                tab_zeile('Speicherinhalt', $rowk["speicherinhalt"], htmlentities($rowk["spbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["spdok"], ENT_QUOTES, "UTF-8")); 
     588                        break; 
    587589                        case $btyp_hist: // 10 
    588590                                tab_zeile('Arch&auml;ologischer Typ', $rowk["archaeologischertyp"], $bes, '', $dok); 
  • trunk/info/info/alkisn/alkisexport.php

    r430 r431  
    3333        2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden 
    3434 
    35         ToDo: 
     35        ToDo:. 
    3636        - In den gespeicherten Views "exp_csv" und "exp_csv_str" den Fall Kataster-Amts-Mix berÃŒcksichtigen. 
    3737        - Abruf FlurstÃŒck sollte auch mit "fskennz" (ggg-ff-zzz/nn) statt "gml-id" möglich sein 
    3838        - In Dateiname den Straßennamen statt der gmlid verwenden? (Umlaute?) 
    3939        - 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_execute 
    4140*/ 
    4241 
     
    197196                break; 
    198197 
    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 
    201200                break; 
    202201 
  • trunk/info/info/alkisn/alkisgebaeudenw.php

    r430 r431  
    1919        2022-02-17 Neue Bauwerks-Typen 
    2020        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 
    2122*/ 
    2223 
     
    246247                echo "</td>\n\t<td>"; 
    247248                if ($gzus != "") { 
    248                         echo DsKy(gzus, 'Zustand-*').$gzustand; 
     249                        echo DsKy($gzus, 'Zustand-*').$gzustand; 
    249250                } 
    250251                echo "</td>"; 
Note: See TracChangeset for help on using the changeset viewer.