Changeset 397


Ignore:
Timestamp:
12/20/17 11:42:29 (6 years ago)
Author:
frank.jaeger
Message:

Views für CSV-Export aus Buchauskunft korrigiert: keine mehrfachen Zeilen wenn Personen mehrere Adressen haben.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/norgis_alkis_pp/postcreate.de/views_exp_csv.sql

    r396 r397  
    44-- =================================================================================== 
    55 
    6 -- Aufgabe: 
    7 -- Views bereit stellen fÃŒr die ALKIS-Navigation fÃŒr Mapbender 2 und die Buch-Auskunft und spezielle WMS. 
    8  
    9 -- AusfÃŒhrung in: 
    10 -- Step "postcreate.d" des ALKIS-Importers. Hier also nur Definitionen machen, keine Daten bearbeiten. 
     6-- Aufgabe:       Views bereit stellen fÃŒr den CSV-Export in der ALKIS-Buch-Auskunft. 
     7-- AusfÃŒhrung in: Step "postcreate.d" des ALKIS-Importers. Hier also nur Definitionen machen, keine Daten bearbeiten. 
    118 
    129--Stand  
     
    2017--  2017-10-10 Berechtigungen rausgenommen in getrennte Datei 
    2118--  2017-12-06 Umbenennung von "x_classic2norgis.sql" nach "views_exp_csv.sql" 
     19--  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). 
     21--             Der View "exp_csv_str" ist jetzt direkt als 4fach-UNION (2x2) codiert statt mit eingebettetem gespeicherten 2fach-Union. 
     22--             Hauptvorteil: Keine undurchsichtigen AbhÀngigkeiten. Ist auch etwas schneller. 
    2223 
    2324-- ToDo: 
    2425--  - die alten Übersichten "pp_flur", "pp_gemarkung" und "pp_gemeinde" wieder erzeugen 
    2526--    Siehe Script: "pp_gebiete.sql" (FÃŒllen) und Teile von "pp_definition.sql" (DB-Struktur). 
    26 --  - Statt den View "flst_an_strasse" im View "exp_csv_str" einzubinden könnte ein 4fach-UNION schneller sein. Testen. 
    2727 
    2828 
    2929-- I n d i c e s 
    3030-- ============================ 
    31  
    3231-- Tabelle "ax_gemarkungsteilflur" sollte Such-Index erhalten auf "gemarkung". 
    3332-- FÃŒr Auflistung aller Fluren zur Gemarkung in Script "alkisnav_fls", Function "EineGemarkung". 
    3433 
    3534 
    36 -- Der WMS "Flurstuecke_Kommunal" (aus View "st_flurst[gkz][e|r]") wird langsam, wenn er in einer kreisweiten Datenbank ausgefÃŒhrt wird. 
     35-- Der WMS "Flurstuecke Kommunal" (aus View "st_flurst[gkz][e|r]") wird langsam, wenn er in einer kreisweiten Datenbank ausgefÃŒhrt wird. 
    3736-- Das Filter-Feld benötigt einen Index: 
    3837DROP INDEX if exists ax_person_nname; 
     
    4443-- ============================ 
    4544 
    46  
    4745-- Bausteine fÃŒr andere Views: 
    4846-- --------------------------- 
    49  
    5047-- Ein View, der die Verbindung von FlurstÃŒck zur Straßentabelle fÃŒr zwei verschiedene FÀlle herstellt. 
    5148-- Einmal ÃŒber die Lagebezeichnung MIT Hausnummer und einmal OHNE. 
    5249-- Dies kann als "MittelstÃŒck" in den anderen Views eingefÃŒgt werden. 
    5350 
    54 --           DROP VIEW public.flst_an_strasse; 
     51   DROP VIEW if exists public.flst_an_strasse; -- wird nicht mehr verwendet 
     52/* 
    5553CREATE OR REPLACE VIEW public.flst_an_strasse 
    5654AS 
     
    7977COMMENT ON VIEW public.flst_an_strasse  
    8078 IS 'ALKIS-Beziehung von FlurstÃŒck zu Straßentabelle. UNION-Zusammenfassung der FÀlle MIT und OHNE Hausnummer.'; 
    81  
    82 -- Muss man noch dafÃŒr sorgen, dass FlurstÃŒck nicht doppelt vorkommt? z.B. mit DISTINCT 
    83 -- Oder mÃŒssen ggf. mehrfache FS im Programm ÃŒbersprungen werden? 
     79*/ 
    8480 
    8581 
     
    9793-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 
    9894 
    99  
    10095DROP VIEW IF EXISTS exp_csv; 
    10196CREATE OR REPLACE VIEW exp_csv 
    10297AS 
    103  SELECT 
     98 SELECT -- Fall: einfache Buchung (ohne "Recht an") 
    10499  -- F l u r s t ÃŒ c k 
    105100    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     
    139134    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    140135    a.bestimmungsland                    AS land 
    141   FROM ax_flurstueck    f               -- FlurstÃŒck 
     136   FROM ax_flurstueck    f               -- FlurstÃŒck 
    142137  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
    143138    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
     
    152147  JOIN ax_person p                      -- NamNum >benennt> Person  
    153148    ON p.gml_id = nn.benennt 
    154   LEFT JOIN ax_anschrift a  
    155     ON a.gml_id = ANY (p.hat) 
     149  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
     150    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.gml_id DESC LIMIT 1) 
    156151  -- E n t s c h l ÃŒ s s e l n: 
    157152  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede" 
     
    177172   ON rg.gml_id = gb.gml_id  -- zum GB 
    178173  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL 
    179 UNION 
    180  SELECT 
     174--------- 
     175  UNION 
     176--------- 
     177 SELECT  -- Fall: "Recht an" 
    181178  -- F l u r s t ÃŒ c k 
    182179    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     
    211208    p.nachnameoderfirma,                                 -- Familienname 
    212209    p.geburtsdatum, 
    213    -- A d r e s s e  der Person 
     210  -- A d r e s s e  der Person 
    214211    a.postleitzahlpostzustellung         AS plz, 
    215212    a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort 
     
    233230  JOIN ax_person p                      -- NamNum >benennt> Person  
    234231    ON p.gml_id = nn.benennt 
    235   LEFT JOIN ax_anschrift a  
    236     ON a.gml_id = ANY (p.hat) 
     232  LEFT JOIN ax_anschrift a               -- nur die "letzte" Anschrift zur Person verwenden 
     233    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.gml_id DESC LIMIT 1) 
    237234  -- E n t s c h l ÃŒ s s e l n: 
    238235  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede" 
     
    266263 
    267264-- Eine Variante des View "exp_csv": 
    268 -- Hier wird zusÀtzlich der Baustein "flst_an_strasse" verwendet. 
    269 -- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden 
     265-- Hier wird zusÀtzlich die Lagebezeichnung zum FlurstÃŒck angebunden in den Varianten MIT/OHNE Hausnummer. 
     266-- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden, 
    270267-- um nur die FlurstÃŒcke zu bekommen, die an einer Straße liegen. 
    271268 
     
    273270 
    274271CREATE OR REPLACE VIEW exp_csv_str 
    275 AS 
    276  SELECT 
    277     l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag" 
    278                                                          -- UNTERSCHIED zu exp_csv 
    279     l.fall,                                              -- mit/ohne Hausnummer zur Lage 
     272AS      -- Version mit 4fach-UNION (2x2 FÀlle) statt eingebauter View "flst_an_strasse" 
     273 SELECT -- Fall 1: einfache Buchung (ohne Recht an)  // Lagebezeichnung MIT Hausnummer 
     274    sm.gml_id                            AS stgml,       -- Filter: gml_id der Straße aus "ax_lagebezeichnungkatalogeintrag" 
     275    'm'                                  AS fall,        -- SÀtze unterschieden: MIT HsNr 
    280276  -- F l u r s t ÃŒ c k 
    281277    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     
    312308  -- A d r e s s e  der Person 
    313309    a.postleitzahlpostzustellung         AS plz, 
    314     a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort 
     310    a.ort_post                           AS ort,         -- Anschriftenzeile 1: PLZ+Ort 
    315311    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    316312    a.bestimmungsland                    AS land 
    317313  FROM ax_flurstueck    f               -- FlurstÃŒck 
    318   JOIN flst_an_strasse  l               -- Lage (hier zusÀtzlicher JOIN gegenÃŒber Version "exp_csv")  
    319     ON l.fsgml = f.gml_id               -- ToDo: ++ Durch UNION ersetzen! Oder durch Subquery? ++ 
    320   JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     314  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     315  JOIN ax_lagebezeichnungmithausnummer lm -- Lage MIT 
     316    ON lm.gml_id = ANY (f.weistauf) 
     317  JOIN ax_lagebezeichnungkatalogeintrag sm 
     318   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  
     319   JOIN ax_gemarkung g                   -- entschlÃŒsseln 
    321320    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    322321  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
     
    330329  JOIN ax_person p                      -- NamNum >benennt> Person  
    331330    ON p.gml_id = nn.benennt 
    332   LEFT JOIN ax_anschrift a  
    333     ON a.gml_id = ANY (p.hat) 
     331  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
     332    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.gml_id DESC LIMIT 1) 
    334333  -- E n t s c h l ÃŒ s s e l n: 
    335334  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede" 
     
    354353      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    355354   ON rg.gml_id = gb.gml_id  -- zum GB 
    356   WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL 
    357 UNION 
    358  SELECT 
    359     l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag" 
    360                                                          -- UNTERSCHIED zu exp_csv 
    361     l.fall,                                              -- mit/ohne Hausnummer zur Lage 
     355  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL AND lm.endet IS NULL   
     356--------- 
     357  UNION 
     358--------- 
     359 SELECT -- Fall 2: 2 Buchungs-Stellen (Recht An)  //  Lagebezeichnung MIT Hausnummer 
     360    sm.gml_id                            AS stgml,       -- Filter: gml_id der Straße aus "ax_lagebezeichnungkatalogeintrag" 
     361    'm'                                  AS fall,        -- SÀtze unterschieden: MIT HsNr 
    362362  -- F l u r s t ÃŒ c k 
    363363    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     
    394394   -- A d r e s s e  der Person 
    395395    a.postleitzahlpostzustellung         AS plz, 
    396     a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort 
     396    a.ort_post                           AS ort,         -- Anschriftenzeile 1: PLZ+Ort 
    397397    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
    398398    a.bestimmungsland                    AS land 
    399399  FROM ax_flurstueck f                  -- FlurstÃŒck 
    400   JOIN flst_an_strasse  l               -- Lage (hier zusÀtzlicher JOIN gegenÃŒber Version "exp_csv")  
    401     ON l.fsgml = f.gml_id  
     400  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     401  JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
     402    ON lm.gml_id = ANY (f.weistauf) 
     403  JOIN ax_lagebezeichnungkatalogeintrag sm 
     404    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  
    402405  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
    403406    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
     
    416419  JOIN ax_person p                      -- NamNum >benennt> Person  
    417420    ON p.gml_id = nn.benennt 
    418   LEFT JOIN ax_anschrift a  
    419     ON a.gml_id = ANY (p.hat) 
     421  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
     422    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.gml_id DESC LIMIT 1) 
    420423  -- E n t s c h l ÃŒ s s e l n: 
    421424  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede" 
     
    435438   ON rg.gml_id = gb.gml_id  -- zum GB 
    436439  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL 
    437     AND dien.endet IS NULL 
     440    AND dien.endet IS NULL AND lm.endet IS NULL   
     441--------- 
     442  UNION 
     443--------- 
     444 SELECT -- Fall 3: einfache Buchung (ohne Recht an)  //  Lagebezeichnung OHNE Hausnummer 
     445    so.gml_id                            AS stgml,       -- Filter: gml_id der Straße aus "ax_lagebezeichnungkatalogeintrag" 
     446    'o'                                  AS fall,        -- SÀtze unterschieden: OHNE HsNr 
     447  -- F l u r s t ÃŒ c k 
     448    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     449    f.flurstueckskennzeichen             AS fs_kennz, 
     450    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln 
     451    f.flurnummer, f.zaehler, f.nenner,  
     452    f.amtlicheflaeche                    AS fs_flae, 
     453    g.bezeichnung                        AS gemarkung, 
     454  -- G r u n d b u c h 
     455  --gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID 
     456    gb.bezirk                            AS gb_bezirk, 
     457    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
     458    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
     459  -- B u c h u n g s s t e l l e  (GrundstÃŒck) 
     460    s.laufendenummer                     AS bu_lfd,      -- BVNR 
     461    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     462    s.buchungsart,                                       -- verschlÃŒsselt 
     463    wb.v                                 AS bu_art,      -- Buchungsart entschlÃŒsselt 
     464  -- N a m e n s N u m m e r  (Normalfall mit Person) 
     465    nn.laufendenummernachdin1421         AS nam_lfd,  
     466    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,     -- als Excel-Formel 
     467  -- R e c h t s g e m e i n s c h a f t  (Sonderfall von Namensnummer, ohne Person, ohne Nummer) 
     468    rg.artderrechtsgemeinschaft          AS nam_adr, 
     469    rg.v                                 AS nam_adrv,    -- Art der Rechtsgem. - Value zum Key 
     470    rg.beschriebderrechtsgemeinschaft    AS nam_bes, 
     471  -- P e r s o n 
     472  --p.gml_id                             AS psgml,       -- möglicher Filter Personen-GML-ID 
     473    p.anrede,                                            -- Anrede key 
     474    wp.v                                 AS anrv,        -- Anrede Value zum Key 
     475    p.vorname, 
     476    p.namensbestandteil, 
     477    p.nachnameoderfirma,                                 -- Familienname 
     478    p.geburtsdatum, 
     479  -- A d r e s s e  der Person 
     480    a.postleitzahlpostzustellung         AS plz, 
     481    a.ort_post                           AS ort,         -- Anschriftenzeile 1: PLZ+Ort 
     482    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
     483    a.bestimmungsland                    AS land 
     484  FROM ax_flurstueck    f               -- FlurstÃŒck 
     485-- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     486  JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
     487    ON lo.gml_id = ANY (f.zeigtauf) 
     488  JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
     489    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 
     490  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     491    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
     492  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle 
     493    ON f.istgebucht = s.gml_id 
     494  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     495    ON gb.gml_id = s.istbestandteilvon 
     496  JOIN ax_buchungsblattbezirk z  
     497    ON gb.land=z.land AND gb.bezirk=z.bezirk  
     498  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     499    ON gb.gml_id = nn.istbestandteilvon 
     500  JOIN ax_person p                      -- NamNum >benennt> Person  
     501    ON p.gml_id = nn.benennt 
     502  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
     503    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.gml_id DESC LIMIT 1) 
     504  -- E n t s c h l ÃŒ s s e l n: 
     505  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede" 
     506    ON cast(p.anrede AS character varying) = wp.k  
     507   AND wp.element = 'ax_person'  
     508   AND wp.bezeichnung = 'anrede'  
     509  LEFT JOIN alkis_wertearten wb         -- EntschlÃŒsseln "Buchungsart" 
     510    ON cast(s.buchungsart AS character varying) = wb.k 
     511 -- buchungsart = integer / .k  = char 4stellig 
     512   AND wb.element = 'ax_buchungsstelle' 
     513   AND wb.bezeichnung = 'buchungsart'  
     514  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
     515  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
     516  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person. 
     517  LEFT JOIN 
     518   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.v 
     519       FROM ax_namensnummer r  
     520       JOIN ax_buchungsblatt gr 
     521         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
     522      LEFT JOIN alkis_wertearten wr 
     523        ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft'  
     524      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
     525   ON rg.gml_id = gb.gml_id  -- zum GB 
     526  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL AND lo.endet IS NULL  
     527--------- 
     528  UNION 
     529--------- 
     530 SELECT -- Fall 4: 2 Buchungs-Stellen (Recht An)  //  Lagebezeichnung OHNE Hausnummer 
     531    so.gml_id                            AS stgml,       -- Filter: gml_id der Straße aus "ax_lagebezeichnungkatalogeintrag" 
     532    'o'                                  AS fall,        -- SÀtze unterschieden: OHNE HsNr 
     533  -- F l u r s t ÃŒ c k 
     534    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     535    f.flurstueckskennzeichen             AS fs_kennz, 
     536    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln 
     537    f.flurnummer, f.zaehler, f.nenner,  
     538    f.amtlicheflaeche                    AS fs_flae, 
     539    g.bezeichnung                        AS gemarkung, 
     540  -- G r u n d b u c h 
     541  --gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID 
     542    gb.bezirk                            AS gb_bezirk, 
     543    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
     544    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
     545  -- B u c h u n g s s t e l l e  (GrundstÃŒck) 
     546    s.laufendenummer                     AS bu_lfd,      -- BVNR 
     547    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     548    s.buchungsart,                                       -- verschlÃŒsselt 
     549    wb.v                                 AS bu_art,      -- Buchungsart entschlÃŒsselt 
     550  -- N a m e n s N u m m e r  (Normalfall mit Person) 
     551    nn.laufendenummernachdin1421         AS nam_lfd,  
     552    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,     -- als Excel-Formel 
     553  -- R e c h t s g e m e i n s c h a f t  (Sonderfall von Namensnummer, ohne Person, ohne Nummer) 
     554    rg.artderrechtsgemeinschaft          AS nam_adr, 
     555    rg.v                                 AS nam_adrv,    -- Art der Rechtsgem. - Value zum Key 
     556    rg.beschriebderrechtsgemeinschaft    AS nam_bes, 
     557  -- P e r s o n 
     558  --p.gml_id                             AS psgml,       -- möglicher Filter Personen-GML-ID 
     559    p.anrede,                                            -- Anrede key 
     560    wp.v                                 AS anrv,        -- Anrede Value zum Key 
     561    p.vorname, 
     562    p.namensbestandteil, 
     563    p.nachnameoderfirma,                                 -- Familienname 
     564    p.geburtsdatum, 
     565   -- A d r e s s e  der Person 
     566    a.postleitzahlpostzustellung         AS plz, 
     567    a.ort_post                           AS ort,         -- Anschriftenzeile 1: PLZ+Ort 
     568    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr 
     569    a.bestimmungsland                    AS land 
     570  FROM ax_flurstueck f                  -- FlurstÃŒck 
     571-- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     572  JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
     573    ON lo.gml_id = ANY (f.zeigtauf) 
     574  JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
     575    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 
     576  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
     577    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
     578  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle 
     579 -- Variante mit 2 Buchungs-Stellen (Recht An) 
     580  JOIN ax_buchungsstelle dien           -- dienende Buchung 
     581    ON f.istgebucht = dien.gml_id 
     582  JOIN ax_buchungsstelle s              -- herrschende Buchung 
     583    ON dien.gml_id = ANY (s.an)         -- hat Recht an 
     584  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     585    ON gb.gml_id = s.istbestandteilvon 
     586  JOIN ax_buchungsblattbezirk z  
     587    ON gb.land=z.land AND gb.bezirk=z.bezirk  
     588  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     589    ON gb.gml_id = nn.istbestandteilvon 
     590  JOIN ax_person p                      -- NamNum >benennt> Person  
     591    ON p.gml_id = nn.benennt 
     592  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden 
     593    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.gml_id DESC LIMIT 1) 
     594  -- E n t s c h l ÃŒ s s e l n: 
     595  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede" 
     596    ON cast(p.anrede AS character varying)=wp.k AND wp.element='ax_person' AND wp.bezeichnung='anrede'  
     597  LEFT JOIN alkis_wertearten wb         -- EntschlÃŒsseln "Buchungsart" 
     598    ON cast(s.buchungsart AS character varying) = wb.k  
     599   AND wb.element = 'ax_buchungsstelle'  
     600   AND wb.bezeichnung = 'buchungsart'  
     601  LEFT JOIN 
     602   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.v 
     603       FROM ax_namensnummer r  
     604       JOIN ax_buchungsblatt gr 
     605         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
     606      LEFT JOIN alkis_wertearten wr 
     607        ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft'  
     608      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
     609   ON rg.gml_id = gb.gml_id  -- zum GB 
     610  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL 
     611    AND dien.endet IS NULL AND lo.endet IS NULL  
    438612 
    439613ORDER BY fs_kennz,   -- f.flurstueckskennzeichen,  
     
    447621 
    448622 
    449 -- Berechtigung fuer Views 
    450 -- ============================ 
    451  
    452   GRANT SELECT ON TABLE public.flst_an_strasse  TO mb27; 
     623-- Berechtigung 
     624-- ============ 
    453625  GRANT SELECT ON TABLE public.exp_csv          TO mb27; 
    454626  GRANT SELECT ON TABLE public.exp_csv_str      TO mb27; 
  • trunk/umn/alkis_n/alkis_buchg.map

    r396 r397  
    66# Stand 
    77#  2017-12-08 Entwurf 
     8#  2017-12-08 Neu: 4/2303 
    89        NAME "alkis_buchg_*gkz*" 
    910        EXTENT ... 
     
    204205                        END 
    205206                END 
     207                CLASS 
     208                        EXPRESSION "2303" 
     209                        NAME "Erbbaurechtsanteil Par. 3 Abs. 4 GBO" 
     210                #       NAME "2303 Erbbaurechtsanteil Par. 3 Abs. 4 GBO" 
     211                        STYLE 
     212                                SYMBOL hatchsym ANGLE 45 
     213                                COLOR 250 160 0 OPACITY 70 # Orange 
     214                                SIZE 6 MINSIZE 3 MAXSIZE 12 
     215                                WIDTH 2 MINWIDTH 1 MAXWIDTH 2 
     216                                 
     217                        END 
     218                END 
    206219                CLASS # sonstige/Rest 
    207220                        STYLE 
Note: See TracChangeset for help on using the changeset viewer.