Ignore:
Timestamp:
01/21/14 17:14:52 (7 years ago)
Author:
frank.jaeger
Message:

Verbesserung CSV-Export: Rechtsgemeinschaft in Namenszeile.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/sichten.sql

    r303 r305  
    2525--  2014-01-17 View "exp_csv" fÃŒr den Export von CSV-Daten aus der Auskunft mit Modul alkisexport.php. 
    2626--  2014-01-20 Erweiterung "exp_csv" fÃŒr alkisexport.php 
     27--  2014-01-21 In "exp_csv": Rechtsgemeinsachaft zu allen Personen statt als eigener Satz. 
    2728 
    2829 
     
    7576 
    7677 
    77 -- Generelle Export-Struktur FlurstÃŒck - Buchung - Grundbuch - Person 
    78 -- ------------------------------------------------------------------ 
     78-- Generelle Export-Struktur "FlurstÃŒck - Buchung - Grundbuch - Person" 
     79-- -------------------------------------------------------------------- 
    7980-- Verwendet den gespeicherten View "doppelverbindung". 
    8081-- Wird benötigt im Auskunft-Modul "alkisexport.php": 
     
    8788-- Diese Redundanzen mÃŒssen vom dem Programm gefiltert werden, das die Daten ÃŒber eine Schnittstelle einliest. 
    8889 
    89 -- Durch LEFT-JOIN werden wahlweise Namennummern mit Person und Adresse erzeugt,  
    90 -- oder auch Namensnummern einer einem Beschrieb der Rechtsgemeinschaft oder leere Felder zu einem fiktiven Grundbuch. 
    91 -- Auch mit diesen Zeilen-Varianten muss das weiter verarbeitende Programm klar kommen. 
    92  
    9390-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 
    9491 
     92-- 2014-01-21: "Rechtsgemeinschaft" in den Datensatz aller anderen Namen 
    9593--           DROP VIEW exp_csv; 
    9694CREATE OR REPLACE VIEW exp_csv 
     
    9896 SELECT 
    9997  -- FlurstÃŒck 
    100      f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
    101      f.flurstueckskennzeichen             AS fs_kennz, 
    102      f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln 
    103      f.flurnummer, f.zaehler, f.nenner,  
    104      f.amtlicheflaeche                    AS fs_flae, 
    105      g.bezeichnung                        AS gemarkung, 
     98    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID 
     99    f.flurstueckskennzeichen             AS fs_kennz, 
     100    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln 
     101    f.flurnummer, f.zaehler, f.nenner,  
     102    f.amtlicheflaeche                    AS fs_flae, 
     103    g.bezeichnung                        AS gemarkung, 
    106104 
    107105  -- Grundbuch 
    108      gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID 
    109      gb.bezirk                            AS gb_bezirk, 
    110      gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
    111      z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
     106    gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID 
     107    gb.bezirk                            AS gb_bezirk, 
     108    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
     109    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name 
    112110 
    113111  -- Buchungsstelle (GrundstÃŒck) 
    114      s.laufendenummer                     AS bu_lfd,      -- BVNR 
     112    s.laufendenummer                     AS bu_lfd,      -- BVNR 
    115113    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder 
    116      '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
    117      s.buchungsart,                                       -- verschlÃŒsselt 
    118      b.bezeichner                         AS bu_art,      -- Buchungsart entschlÃŒsselt 
    119  
    120    --NamensNummer 
    121      nn.laufendenummernachdin1421         AS nam_lfd,  
    122      '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,         -- als Excel-Formel 
    123      nn.artderrechtsgemeinschaft          AS nam_adr, 
    124      nn.beschriebderrechtsgemeinschaft    AS nam_bes, 
    125  
    126      -- Person 
     114    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
     115    s.buchungsart,                                       -- verschlÃŒsselt 
     116    b.bezeichner                         AS bu_art,      -- Buchungsart entschlÃŒsselt 
     117 
     118  -- NamensNummer (Normalfall mit Person) 
     119    nn.laufendenummernachdin1421         AS nam_lfd,  
     120    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,         -- als Excel-Formel 
     121 
     122  -- Rechtsgemeinsachaft (Sonderfall von Namensnummer, ohne Person, ohne Nummer) 
     123    rg.artderrechtsgemeinschaft          AS nam_adr, 
     124    rg.beschriebderrechtsgemeinschaft    AS nam_bes, 
     125 
     126  -- Person 
    127127     p.gml_id                             AS psgml,           -- möglicher Filter Personen-GML-ID 
    128128     p.anrede, 
     
    133133     --p.geburtsname, p.akademischergrad  
    134134  
    135      -- Adresse der Person 
    136      a.postleitzahlpostzustellung         AS plz, 
    137      a.ort_post                           AS ort,             -- Anschreifenzeile 1: PLZ+Ort 
    138      a.strasse,  a.hausnummer,                                -- Anschriftenzeile 2: Straße+HsNr 
    139      a.bestimmungsland                    AS land 
     135  -- Adresse der Person 
     136    a.postleitzahlpostzustellung         AS plz, 
     137    a.ort_post                           AS ort,             -- Anschreifenzeile 1: PLZ+Ort 
     138    a.strasse,  a.hausnummer,                                -- Anschriftenzeile 2: Straße+HsNr 
     139    a.bestimmungsland                    AS land 
    140140 
    141141  FROM ax_flurstueck    f               -- FlurstÃŒck 
     
    151151    ON s.buchungsart = b.wert  
    152152 
    153   JOIN alkis_beziehungen v3              -- Buchung --> Grundbuchblatt 
     153  JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt 
    154154    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' 
    155155  JOIN ax_buchungsblatt  gb  
     
    159159    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    160160 
    161   JOIN alkis_beziehungen v4              -- Blatt  --> NamNum 
     161  JOIN alkis_beziehungen v4             -- Blatt  --> NamNum 
    162162    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'   
    163163  JOIN ax_namensnummer nn  
    164164    ON v4.beziehung_von = nn.gml_id 
    165165 
    166   LEFT JOIN alkis_beziehungen v5         -- NamNum --> Person  
    167    -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreinbung der Rechtsgemeinschaft" geliefert (ohne Person) 
     166  JOIN alkis_beziehungen v5             -- NamNum --> Person  
     167   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person) 
    168168    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' 
    169   LEFT JOIN ax_person p 
     169  JOIN ax_person p 
    170170    ON v5.beziehung_zu = p.gml_id 
    171171 
     
    174174  LEFT JOIN ax_anschrift a  
    175175    ON v6.beziehung_zu = a.gml_id 
    176   
     176 
     177  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery: 
     178 
     179  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
     180  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person. 
     181  LEFT JOIN 
     182   ( SELECT v7.beziehung_zu, 
     183            rg.artderrechtsgemeinschaft,  
     184            rg.beschriebderrechtsgemeinschaft  
     185       FROM ax_namensnummer rg  
     186       JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft)  
     187         ON v7.beziehung_von = rg.gml_id 
     188      WHERE v7.beziehungsart = 'istBestandteilVon' 
     189        AND NOT rg.artderrechtsgemeinschaft IS NULL 
     190   ) AS rg                         -- Rechtsgemeinschaft 
     191   ON rg.beziehung_zu = gb.gml_id  -- zum GB 
     192 
    177193  ORDER BY f.flurstueckskennzeichen,  
    178194           gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer, 
     
    182198 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.'; 
    183199 
    184 --GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme 
     200  GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme 
    185201--GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
     202 
     203 
     204-- Analyse: Kann es mehr als 1 "Rechtsgemeinschaft" zu einem GB-Blatt geben?  
     205-- (Diese Frage stellte sich beim Design des View "exp_csv".) 
     206-- Schritt 1: alle vorhandenen 
     207CREATE OR REPLACE VIEW rechtsgemeinschaften_zum_grundbuch 
     208AS 
     209 SELECT 
     210     gb.gml_id, 
     211     gb.bezirk, 
     212     gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
     213     nn.artderrechtsgemeinschaft, 
     214     nn.beschriebderrechtsgemeinschaft 
     215  FROM ax_buchungsblatt  gb  
     216  JOIN alkis_beziehungen v 
     217    ON v.beziehung_zu = gb.gml_id AND v.beziehungsart = 'istBestandteilVon'   
     218  JOIN ax_namensnummer nn  
     219    ON v.beziehung_von = nn.gml_id 
     220  WHERE NOT nn.artderrechtsgemeinschaft IS NULL 
     221  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, 
     222           nn.laufendenummernachdin1421; 
     223 
     224COMMENT ON VIEW rechtsgemeinschaften_zum_grundbuch  
     225 IS 'Rechtsgemeinschaften zum Grundbuchblatt.'; 
     226 
     227-- Schritt 2: Wo gibt es mehrere zu einem GB-Blatt 
     228CREATE OR REPLACE VIEW rechtsgemeinschaften_zaehlen 
     229AS 
     230 SELECT gml_id, bezirk, gb_blatt, count(artderrechtsgemeinschaft) AS anzahl 
     231   FROM rechtsgemeinschaften_zum_grundbuch 
     232   GROUP BY gml_id, bezirk, gb_blatt 
     233   HAVING count(artderrechtsgemeinschaft) > 1 
     234   ORDER BY bezirk, gb_blatt; 
     235 
     236COMMENT ON VIEW rechtsgemeinschaften_zaehlen  
     237 IS 'Rechtsgemeinschaften zum Grundbuchblatt zaehlen. Anzeigen, wenn es mehrere gibt.'; 
     238-- Ja, kann es geben 
     239 
     240-- Schritt 3: alle vorhandenen Zeilen anzeigen zu den GB-BlÀttern, bei denen es mehrere gibt. 
     241CREATE OR REPLACE VIEW rechtsgemeinschaften_mehrfachzeilen 
     242AS 
     243 SELECT *  
     244   FROM rechtsgemeinschaften_zum_grundbuch 
     245  WHERE gml_id IN (SELECT gml_id FROM rechtsgemeinschaften_zaehlen); 
     246 
     247COMMENT ON VIEW rechtsgemeinschaften_mehrfachzeilen  
     248 IS 'GrundbuchblÀtter mit mehr als einer Zeile Rechtsgemeinschaft.'; 
     249-- Fazit: 
     250-- Man findet einige wenige identische oder Àhnlich aussehende Zeilen zu einem Grundbuch. 
     251-- Das sieht also eher nach einem PostNAS-FortfÃŒhrungsproblem aus, als nach unabhÀngigen Zeilen. 
     252-- Wurde hier eine Relation nicht sauber gelöscht? 
    186253 
    187254 
Note: See TracChangeset for help on using the changeset viewer.