Ignore:
Timestamp:
09/10/14 12:08:18 (7 years ago)
Author:
frank.jaeger
Message:

Umstellung von PostNAS 0.7 auf PostNAS 0.8, ohne Tabelle "alkis_beziehungen".

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/sichten.sql

    r328 r330  
    33-- ===== 
    44 
     5--  PostNAS 0.8 
     6 
    57--  ----------------------------------------- 
    68--  Sichten fÃŒr Fehlersuche und Daten-Analyse 
     
    911--  Dieses SQL braucht nur bei Bedarf in einer PostNAS-DB verarbeitet werden. 
    1012--  Es werden zusÀtzliche Views eingerichtet, die nur bei Fehlersuche und Analyse (vom Entwickler) benötigt werden. 
    11  
    12 --  PostNAS 0.7 
    1313 
    1414--  2012-04-17 flstnr_ohne_position 
     
    3030--  2014-01-31 Kommentar 
    3131--  2014-02-06 nachmigration_aehnliche_anschriften 
     32--  2014-09-02 Die Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen. 
     33--             Relationen nun direkt ÃŒber neue Spalten in den Objekttabellen.  
    3234 
    3335-- Bausteine fÃŒr andere Views: 
     
    4749 
    4850--           DROP VIEW public.doppelverbindung; 
     51 
    4952CREATE OR REPLACE VIEW public.doppelverbindung 
    5053AS 
    51   SELECT v1.beziehung_von AS fsgml,       -- gml_id auf FlurstÃŒck - Seite 
    52          v1.beziehung_zu  AS bsgml,       -- gml_id auf Buchungs  - Seite 
    53       --'direkt' AS fall, 
    54          0 AS ba_dien 
    55     FROM alkis_beziehungen v1 
    56    WHERE v1.beziehungsart = 'istGebucht'  -- FS --> Buchung 
     54  -- FS >istGebucht> Buchungstelle 
     55  SELECT f1.gml_id             AS fsgml,    -- gml_id FlurstÃŒck 
     56         b1.gml_id             AS bsgml,    -- gml_id Buchungs 
     57         0                     AS ba_dien 
     58    FROM ax_flurstueck f1 
     59    JOIN ax_buchungsstelle b1   ON f1.istgebucht = b1.gml_id 
    5760 UNION 
    58   -- Buchungstelle  >an>  Buchungstelle  >istBestandteilVon>  BLATT  
    59   SELECT v2.beziehung_von AS fsgml,        -- gml_id auf FlurstÃŒck - Seite 
    60          an.beziehung_von AS bsgml,        -- gml_id auf Buchungs  - Seite (herrschendes GB) 
    61       --'Recht an' AS fall, 
    62          dien.buchungsart AS ba_dien       -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung 
    63     FROM alkis_beziehungen v2 
    64     JOIN ax_buchungsstelle dien 
    65       ON  v2.beziehung_zu = dien.gml_id 
    66     JOIN alkis_beziehungen an 
    67       ON dien.gml_id = an.beziehung_zu 
    68    WHERE v2.beziehungsart = 'istGebucht'   -- FS --> Buchung 
    69      AND an.beziehungsart = 'an'; 
     61  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle 
     62  SELECT f2.gml_id              AS fsgml,   -- gml_id FlurstÃŒck 
     63         b2.gml_id              AS bsgml,   -- gml_id Buchung - (herrschendes GB) 
     64         dien.buchungsart       AS ba_dien  -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung 
     65    FROM ax_flurstueck f2 
     66    JOIN ax_buchungsstelle dien ON f2.istGebucht = dien.gml_id 
     67    JOIN ax_buchungsstelle b2   ON dien.gml_id = ANY (b2.an) 
     68    WHERE dien.endet IS NULL;  -- FÃŒr das zusÀtzliche Verbindungselement die Historie hier ausschließen,  
     69                               -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet. 
    7070 
    7171COMMENT ON VIEW public.doppelverbindung  
     
    8080-- Dies kann als "MittelstÃŒck" in den anderen Views eingefÃŒgt werden. 
    8181 
    82 --   FlurstÃŒck  >weistAuf> ax_lagebezeichnungmithausnummer  <JOIN> ax_lagebezeichnungkatalogeintrag 
    83 --   FlurstÃŒck  >zeigtAuf> ax_lagebezeichnungohnehausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
    84  
    8582--           DROP VIEW public.flst_an_strasse; 
     83 
    8684CREATE OR REPLACE VIEW public.flst_an_strasse 
    8785AS 
    88   SELECT vm.beziehung_von AS fsgml,          -- Join auf "gml_id" aus "ax_flurstÃŒck" 
     86  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     87  SELECT fm.gml_id AS fsgml, 
    8988         sm.gml_id AS stgml,                 -- Filter: gml_id der Straße 
    90       -- sm.gemeinde, sm.lage,               -- Gemeinde- und Straßenschluessel als Filter? 
    9189         'm' AS fall                         -- SÀtze unterschieden: Mit HsNr 
    92     FROM alkis_beziehungen vm                -- Verbindung Mit 
     90    FROM ax_flurstueck fm                    -- FlurstÃŒck Mit 
    9391    JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
    94       ON lm.gml_id=vm.beziehung_zu 
    95      AND vm.beziehungsart= 'weistAuf'  
    96     JOIN ax_lagebezeichnungkatalogeintrag sm -- Ausnahmsweise mal direkt und nicht ÃŒber die "alkis_beziehungen" 
    97       ON lm.land=sm.land  
    98      AND lm.regierungsbezirk=sm.regierungsbezirk  
    99      AND lm.kreis=sm.kreis  
    100      AND lm.gemeinde=sm.gemeinde  
    101      AND lm.lage=sm.lage  
     92      ON lm.gml_id = ANY (fm.weistauf)   
     93    JOIN ax_lagebezeichnungkatalogeintrag sm 
     94      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  
     95   WHERE lm.endet IS NULL                    -- Verbinder nicht Historisch 
    10296 UNION 
    103   SELECT vo.beziehung_von AS fsgml,          -- Join auf gml_id aus ax_flurstÃŒck 
     97  -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     98  SELECT fo.gml_id AS fsgml, 
    10499         so.gml_id AS stgml,                 -- Filter: gml_id der Straße 
    105       -- so.gemeinde, so.lage                -- Gemeinde- und Straßenschluessel als Filter? 
    106100         'o' AS fall                         -- SÀtze unterschieden: Ohne HsNr 
    107     FROM alkis_beziehungen vo                -- Verbindung OHNE 
     101    FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE 
    108102    JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
    109       ON lo.gml_id=vo.beziehung_zu 
    110      AND vo.beziehungsart= 'zeigtAuf'  
     103      ON lo.gml_id = ANY (fo.zeigtauf)   
    111104    JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
    112       ON lo.land=so.land  
    113      AND lo.regierungsbezirk=so.regierungsbezirk  
    114      AND lo.kreis=so.kreis  
    115      AND lo.gemeinde=so.gemeinde  
    116      AND lo.lage=so.lage; 
     105      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 
     106   WHERE lo.endet IS NULL;                   -- Verbinder nicht Historisch 
    117107 
    118108COMMENT ON VIEW public.flst_an_strasse  
     
    143133-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen. 
    144134 
    145 -- 2014-01-21: "Rechtsgemeinschaft" in den Datensatz aller anderen Namen 
    146135--           DROP VIEW exp_csv; 
     136 
    147137CREATE OR REPLACE VIEW exp_csv 
    148138AS 
     
    164154  -- Buchungsstelle (GrundstÃŒck) 
    165155    s.laufendenummer                     AS bu_lfd,      -- BVNR 
    166     --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder 
     156  --s.zaehler, s.nenner,                                 -- Anteil des GB am FS, einzelne Felder 
    167157    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
    168158    s.buchungsart,                                       -- verschlÃŒsselt 
     
    195185  JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 
    196186    ON d.fsgml = f.gml_id  
    197  
    198187  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
    199188    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    200  
    201189  JOIN ax_buchungsstelle s              -- Buchungs-Stelle 
    202190    ON d.bsgml = s.gml_id  
    203191  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart 
    204192    ON s.buchungsart = b.wert  
    205  
    206   JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt 
    207     ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' 
    208   JOIN ax_buchungsblatt  gb  
    209     ON v3.beziehung_zu = gb.gml_id  
    210  
     193  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     194    ON gb.gml_id = s.istbestandteilvon 
    211195  JOIN ax_buchungsblattbezirk z  
    212196    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    213  
    214   JOIN alkis_beziehungen v4             -- Blatt  --> NamNum 
    215     ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'   
    216   JOIN ax_namensnummer nn  
    217     ON v4.beziehung_von = nn.gml_id 
    218  
    219   JOIN alkis_beziehungen v5             -- NamNum --> Person  
    220    -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person) 
    221     ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' 
    222   JOIN ax_person p 
    223     ON v5.beziehung_zu = p.gml_id 
    224  
    225   LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift 
    226     ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat'  
     197  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     198    ON gb.gml_id = nn.istbestandteilvon 
     199  JOIN ax_person p                      -- NamNum >benennt> Person  
     200    ON p.gml_id = nn.benennt 
    227201  LEFT JOIN ax_anschrift a  
    228     ON v6.beziehung_zu = a.gml_id 
    229  
    230   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery: 
    231  
     202    ON a.gml_id = ANY (p.hat) 
     203 
     204  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
    232205  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
    233206  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person. 
    234207  LEFT JOIN 
    235    ( SELECT v7.beziehung_zu, 
    236             rg.artderrechtsgemeinschaft,  
    237             rg.beschriebderrechtsgemeinschaft  
    238        FROM ax_namensnummer rg  
    239        JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft)  
    240          ON v7.beziehung_von = rg.gml_id 
    241       WHERE v7.beziehungsart = 'istBestandteilVon' 
    242         AND NOT rg.artderrechtsgemeinschaft IS NULL 
    243    ) AS rg                         -- Rechtsgemeinschaft 
    244    ON rg.beziehung_zu = gb.gml_id  -- zum GB 
     208   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft  
     209       FROM ax_namensnummer r  
     210       JOIN ax_buchungsblatt gr 
     211         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
     212      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
     213   ON rg.gml_id = gb.gml_id  -- zum GB 
     214 
     215  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 
    245216 
    246217  ORDER BY f.flurstueckskennzeichen,  
     
    250221COMMENT ON VIEW exp_csv  
    251222 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.'; 
    252  
    253   GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme 
    254 --GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
    255223 
    256224 
     
    259227-- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden 
    260228-- um alle FlurstÃŒcke zu bekommen, die an einer Straße liegen. 
     229 
    261230-- DROP           VIEW exp_csv_str; 
     231 
    262232CREATE OR REPLACE VIEW exp_csv_str 
    263233AS 
    264234 SELECT 
    265     l.stgml,                                             -- Filter: Straßen-GML-ID 
     235    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag" 
     236                                                         -- UNTERSCHIED zu exp_csv) 
    266237 
    267238  -- FlurstÃŒck 
     
    281252  -- Buchungsstelle (GrundstÃŒck) 
    282253    s.laufendenummer                     AS bu_lfd,      -- BVNR 
    283     --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder 
     254  --s.zaehler, s.nenner,                                 -- Anteil des GB am FS, einzelne Felder 
    284255    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an') 
    285256    s.buchungsart,                                       -- verschlÃŒsselt 
     
    310281 
    311282  FROM ax_flurstueck    f               -- FlurstÃŒck 
    312  
    313283  JOIN flst_an_strasse  l               -- Lage (hier zusÀtzlicher JOIN gegenÃŒber Version "exp_csv")  
    314284        ON l.fsgml = f.gml_id  
    315  
    316285  JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 
    317286    ON d.fsgml = f.gml_id  
    318  
    319287  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
    320288    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    321  
    322289  JOIN ax_buchungsstelle s              -- Buchungs-Stelle 
    323290    ON d.bsgml = s.gml_id  
    324291  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart 
    325292    ON s.buchungsart = b.wert  
    326  
    327   JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt 
    328     ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon' 
    329   JOIN ax_buchungsblatt  gb  
    330     ON v3.beziehung_zu = gb.gml_id  
    331  
     293  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     294    ON gb.gml_id = s.istbestandteilvon 
    332295  JOIN ax_buchungsblattbezirk z  
    333296    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    334  
    335   JOIN alkis_beziehungen v4             -- Blatt  --> NamNum 
    336     ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'   
    337   JOIN ax_namensnummer nn  
    338     ON v4.beziehung_von = nn.gml_id 
    339  
    340   JOIN alkis_beziehungen v5             -- NamNum --> Person  
    341    -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person) 
    342     ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt' 
    343   JOIN ax_person p 
    344     ON v5.beziehung_zu = p.gml_id 
    345  
    346   LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift 
    347     ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat'  
     297  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     298    ON gb.gml_id = nn.istbestandteilvon 
     299  JOIN ax_person p                      -- NamNum >benennt> Person  
     300    ON p.gml_id = nn.benennt 
    348301  LEFT JOIN ax_anschrift a  
    349     ON v6.beziehung_zu = a.gml_id 
    350  
    351   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery: 
    352  
     302    ON a.gml_id = ANY (p.hat) 
     303 
     304  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
    353305  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft". 
    354306  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person. 
    355307  LEFT JOIN 
    356    ( SELECT v7.beziehung_zu, 
    357             rg.artderrechtsgemeinschaft,  
    358             rg.beschriebderrechtsgemeinschaft  
    359        FROM ax_namensnummer rg  
    360        JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft)  
    361          ON v7.beziehung_von = rg.gml_id 
    362       WHERE v7.beziehungsart = 'istBestandteilVon' 
    363         AND NOT rg.artderrechtsgemeinschaft IS NULL 
    364    ) AS rg                         -- Rechtsgemeinschaft 
    365    ON rg.beziehung_zu = gb.gml_id  -- zum GB 
     308   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft  
     309       FROM ax_namensnummer r  
     310       JOIN ax_buchungsblatt gr 
     311         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
     312      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
     313   ON rg.gml_id = gb.gml_id  -- zum GB 
     314 
     315  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 
    366316 
    367317  ORDER BY f.flurstueckskennzeichen,  
     
    372322 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.'; 
    373323 
    374   GRANT SELECT ON TABLE exp_csv_str TO mb27;       -- User fÃŒr Auskunfts-Programme 
    375 --GRANT SELECT ON TABLE exp_csv_str TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo 
    376  
    377  
    378 -- Test-Ausgabe: 
    379 --   SELECT * FROM exp_csv_str WHERE stgml='DENW18AL000004Fl' LIMIT 40; 
     324-- Test: SELECT * FROM exp_csv_str WHERE stgml = 'DENW15AL100000Q8'; -- Veilchenstraße in Löhne 
    380325 
    381326 
    382327-- Analyse: Kann es mehr als 1 "Rechtsgemeinschaft" zu einem GB-Blatt geben?  
    383328-- (Diese Frage stellte sich beim Design des View "exp_csv".) 
    384 -- Schritt 1: alle vorhandenen 
     329 
     330-- In umgekehrter Reihenfolge löschen (AbhÀngigkeiten). 
     331DROP VIEW IF EXISTS rechtsgemeinschaften_mehrfachzeilen; 
     332DROP VIEW IF EXISTS rechtsgemeinschaften_zaehlen; 
     333DROP VIEW IF EXISTS rechtsgemeinschaften_zum_grundbuch; 
     334 
     335-- Schritt 1: alle vorhandenen Rechtsgemeinschaften 
     336 
    385337CREATE OR REPLACE VIEW rechtsgemeinschaften_zum_grundbuch 
    386338AS 
    387339 SELECT 
    388      gb.gml_id, 
     340     gb.gml_id AS gb_gml, 
    389341     gb.bezirk, 
    390342     gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt, 
    391      nn.artderrechtsgemeinschaft, 
     343     nn.gml_id AS nn_gml, nn.beginnt, nn.laufendenummernachdin1421,  
     344     nn.artderrechtsgemeinschaft AS adr, 
    392345     nn.beschriebderrechtsgemeinschaft 
    393   FROM ax_buchungsblatt  gb  
    394   JOIN alkis_beziehungen v 
    395     ON v.beziehung_zu = gb.gml_id AND v.beziehungsart = 'istBestandteilVon'   
    396   JOIN ax_namensnummer nn  
    397     ON v.beziehung_von = nn.gml_id 
     346  FROM ax_buchungsblatt gb  
     347  JOIN ax_namensnummer  nn  ON gb.gml_id = nn.istbestandteilvon 
    398348  WHERE NOT nn.artderrechtsgemeinschaft IS NULL 
    399   ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, 
    400           nn.laufendenummernachdin1421; 
     349    AND gb.endet IS NULL AND nn.endet IS NULL -- Historie weglassen 
     350  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nn.laufendenummernachdin1421; 
    401351 
    402352COMMENT ON VIEW rechtsgemeinschaften_zum_grundbuch  
     
    404354 
    405355-- Schritt 2: Wo gibt es mehrere zu einem GB-Blatt 
     356 
    406357CREATE OR REPLACE VIEW rechtsgemeinschaften_zaehlen 
    407358AS 
    408  SELECT gml_id, bezirk, gb_blatt, count(artderrechtsgemeinschaft) AS anzahl 
     359 SELECT gb_gml, bezirk, gb_blatt, count(adr) AS anzahl 
    409360   FROM rechtsgemeinschaften_zum_grundbuch 
    410    GROUP BY gml_id, bezirk, gb_blatt 
    411    HAVING count(artderrechtsgemeinschaft) > 1 
     361   GROUP BY gb_gml, bezirk, gb_blatt 
     362   HAVING count(adr) > 1 
    412363   ORDER BY bezirk, gb_blatt; 
    413364 
    414365COMMENT ON VIEW rechtsgemeinschaften_zaehlen  
    415  IS 'Rechtsgemeinschaften zum Grundbuchblatt zaehlen. Anzeigen, wenn es mehrere gibt.'; 
    416 -- Ja, kann es geben 
     366 IS 'Rechtsgemeinschaften zum Grundbuchblatt zÀhlen. Nur Anzeigen, wenn es mehrere gibt.'; 
     367-- Ergebnis: Ja, kann es geben 
    417368 
    418369-- Schritt 3: alle vorhandenen Zeilen anzeigen zu den GB-BlÀttern, bei denen es mehrere gibt. 
     
    421372 SELECT *  
    422373   FROM rechtsgemeinschaften_zum_grundbuch 
    423   WHERE gml_id IN (SELECT gml_id FROM rechtsgemeinschaften_zaehlen); 
     374  WHERE gb_gml IN (SELECT gb_gml FROM rechtsgemeinschaften_zaehlen); 
    424375 
    425376COMMENT ON VIEW rechtsgemeinschaften_mehrfachzeilen  
    426377 IS 'GrundbuchblÀtter mit mehr als einer Zeile Rechtsgemeinschaft.'; 
     378 
    427379-- Fazit: 
    428380-- Man findet einige wenige identische oder Àhnlich aussehende Zeilen zu einem Grundbuch. 
    429381-- Das sieht also eher nach einem PostNAS-FortfÃŒhrungsproblem aus, als nach unabhÀngigen Zeilen. 
    430382-- Wurde hier eine Relation nicht sauber gelöscht? 
    431  
    432383 
    433384-- Welche Karten-Typen ? 
     
    437388   FROM ap_pto p  
    438389   WHERE p.art = 'HNR'; 
     390 
    439391COMMENT ON VIEW kartentypen_der_texte_fuer_hnr  
    440392  IS 'Datenanalyse: Kartentypen in Tabelle ap_pto fÃŒr Hausnummern.'; 
     
    460412     AND p.endet IS NULL 
    461413     AND p.art IN ('AOG_AUG','PNR'); 
     414 
    462415COMMENT ON VIEW ap_pto_muell  
    463416 IS 'Datenanalyse: Beschriftungen aus "ap_pto", die NICHT dargestellt werden sollen.'; 
     
    475428-- fÃŒr die FlurstÃŒcke, die ohne eine manuelle Position kommen. 
    476429 
    477 -- Diese FÀlle identifizieren 
    478 CREATE OR REPLACE VIEW flstnr_ohne_position 
     430-- Diese FÀlle identifizieren und unterscheiden: 
     431 
     432CREATE OR REPLACE VIEW flstnr_mit_manueller_position 
    479433AS  
    480434 SELECT f.gml_id,  
    481435        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen 
    482  FROM        ax_flurstueck     f  
    483    LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id 
    484  --LEFT JOIN ap_pto            p  ON p.gml_id       = v.beziehung_von 
    485   WHERE v.beziehungsart is NULL 
    486     AND f.endet IS NULL 
    487 --ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler 
    488   ; 
    489 COMMENT ON VIEW flstnr_ohne_position IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke ohne manuell gesetzte Position fÃŒr die PrÀsentation der FS-Nr'; 
     436   FROM ax_flurstueck f  
     437   JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon)  
     438  WHERE f.endet IS NULL; 
     439-- TIPP: mit zusÀtzlichem LIMIT auftrufen! 
     440 
     441COMMENT ON VIEW flstnr_mit_manueller_position  
     442  IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke MIT manuell gesetzter Position fÃŒr die PrÀsentation der FS-Nr'; 
     443 
     444CREATE OR REPLACE VIEW flstnr_ohne_manuelle_position 
     445AS  
     446 SELECT f.gml_id,  
     447        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen 
     448 FROM   ax_flurstueck f  
     449   LEFT JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon)  
     450  WHERE p.gml_id IS NULL 
     451    AND f.endet IS NULL; 
     452-- TIPP: mit zusÀtzlichem LIMIT auftrufen! 
     453 
     454COMMENT ON VIEW flstnr_ohne_manuelle_position  
     455  IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke OHNE manuell gesetzte Position fÃŒr die PrÀsentation der FS-Nr'; 
     456 
    490457 
    491458-- Umbruch im Label? z.B. "Schwimm-/nbecken" 
     
    495462 SELECT ogc_fid, schriftinhalt, art 
    496463   FROM ap_pto  
    497   WHERE not schriftinhalt is null 
    498     AND schriftinhalt like '%/n%'; 
     464  WHERE NOT schriftinhalt IS NULL AND schriftinhalt LIKE '%/n%'; 
     465 
    499466COMMENT ON VIEW texte_mit_umbruch  
    500467 IS 'Sicht fÃŒr Datenanalyse: Vorkommen eines Umbruchs im Label-Text.'; 
     
    508475   FROM ax_flurstueck f 
    509476   WHERE f.endet IS NULL; 
     477 
    510478COMMENT ON VIEW flurstuecks_minmax  
    511479 IS 'Sicht fÃŒr Datenanalyse: Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile.'; 
     
    517485         r.wkb_geometry,  
    518486         r.gml_id,  
    519          r.artderfestlegung as adfkey, -- Art der Festlegung - Key  
     487         r.artderfestlegung AS adfkey, -- Art der Festlegung - Key  
    520488         r."name",                     -- Eigenname des Gebietes 
    521489         r.stelle,                     -- Stelle Key 
     
    528496      ON r.artderfestlegung = a.wert 
    529497    LEFT JOIN ax_dienststelle d 
    530       ON r.land   = d.land  
    531      AND r.stelle = d.stelle  
     498      ON r.land   = d.land  AND r.stelle = d.stelle  
    532499  WHERE r.endet IS NULL AND d.endet IS NULL ; 
     500 
    533501COMMENT ON VIEW baurecht  
    534502 IS 'Datenanalyse: EnstschlÃŒsselte Felder zu einer FlÀche des Baurechts.'; 
     
    542510  WHERE           endet IS NULL 
    543511  ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer; 
     512 
    544513COMMENT ON VIEW gemarkung_in_gemeinde  
    545  IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.'; 
     514 IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒcken ermitteln.'; 
    546515 
    547516 
     
    554523 WHERE    endet IS NULL 
    555524 GROUP BY st_geometrytype(wkb_geometry); 
     525 
    556526COMMENT ON VIEW arten_von_flurstuecksgeometrie IS 'Datenanalyse: vorkommende Geometry-Typen in Tabelle ax_flurstueck.'; 
    557527 
     
    559529-- A d r e s s e n  
    560530 
    561 -- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fuer eine Gemeinde 
    562 -- Schluessel der Gemeinde nach Bedarf anpassen! 
     531-- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fÃŒr eine Gemeinde 
     532-- SchlÃŒssel der Gemeinde im Filter (WHERE) nach Bedarf anpassen! 
    563533CREATE OR REPLACE VIEW adressen_hausnummern 
    564534AS 
     
    566536        s.bezeichnung AS strassenname,  
    567537        g.bezeichnung AS gemeindename,  
    568         l.land,  
    569         l.regierungsbezirk,  
    570         l.kreis,  
    571         l.gemeinde,  
    572         l.lage        AS strassenschluessel,  
    573         l.hausnummer  
    574     FROM   ax_lagebezeichnungmithausnummer l   
    575     JOIN   ax_gemeinde g  
    576       ON l.kreis=g.kreis  
    577      AND l.gemeinde=g.gemeinde  
    578     JOIN   ax_lagebezeichnungkatalogeintrag s  
    579       ON l.kreis=s.kreis  
    580      AND l.gemeinde=s.gemeinde  
    581      AND l.lage = s.lage 
    582     WHERE l.gemeinde = 40;  -- "40" = Stadt Lage 
     538        l.land, l.regierungsbezirk, l.kreis, l.gemeinde,  
     539        l.lage        AS strassenschluessel, l.hausnummer  
     540    FROM ax_lagebezeichnungmithausnummer l   
     541    JOIN ax_gemeinde g  
     542      ON l.kreis=g.kreis AND l.gemeinde=g.gemeinde  
     543    JOIN ax_lagebezeichnungkatalogeintrag s  
     544      ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage 
     545    WHERE l.gemeinde = '40';  -- '40' = Stadt Lage 
     546 
    583547COMMENT ON VIEW adressen_hausnummern IS 'Datenanalyse: VerschlÃŒsselte Lagebezeichnung (Straße und Hausnummer) fÃŒr eine Gemeinde. SchlÃŒssel der Gemeinde nach Bedarf anpassen.'; 
    584548 
    585 -- Zuordnung dieser Adressen zu Flurstuecken 
     549-- Zuordnung Adressen zu Flurstuecken 
    586550-- Schluessel der Gemeinde nach Bedarf anpassen! 
    587551CREATE OR REPLACE VIEW adressen_zum_flurstueck 
     
    597561           l.hausnummer  
    598562      FROM   ax_flurstueck f  
    599       JOIN   alkis_beziehungen v  
    600         ON f.gml_id=v.beziehung_von 
    601       JOIN   ax_lagebezeichnungmithausnummer l   
    602         ON l.gml_id=v.beziehung_zu 
    603       JOIN   ax_gemeinde g  
    604         ON l.kreis=g.kreis  
    605        AND l.gemeinde=g.gemeinde  
    606       JOIN   ax_lagebezeichnungkatalogeintrag s  
    607         ON l.kreis=s.kreis  
    608        AND l.gemeinde=s.gemeinde  
    609        AND l.lage = s.lage 
    610      WHERE v.beziehungsart='weistAuf' 
    611        AND l.gemeinde = 40  -- "40" = Stadt Lage 
     563      JOIN   ax_lagebezeichnungmithausnummer l   ON  l.gml_id = ANY (f.weistauf) 
     564      JOIN   ax_gemeinde g   ON l.kreis=g.kreis  AND l.gemeinde=g.gemeinde  
     565      JOIN   ax_lagebezeichnungkatalogeintrag s  ON  l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage 
     566 --  WHERE l.gemeinde = '40'  -- ggf. Anpassen 
    612567     ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner; 
     568 
    613569COMMENT ON VIEW adressen_zum_flurstueck IS 'Datenanalyse: Zuordnung von Adressen zu Flurstuecken. SchlÃŒssel der Gemeinde nach Bedarf anpassen.'; 
    614570 
     
    620576    FROM ap_pto  
    621577   WHERE not schriftinhalt is null  
    622   ORDER BY art; 
     578   ORDER BY art; 
     579 
    623580COMMENT ON VIEW beschriftung_was_kommt_vor IS 'Analyse der vorkommenden Kombinationen in ap_pto (Beschriftung)'; 
    624  
    625 -- Ergebnis: 
    626 -- 2013: PostNAS 0.7  (aus 150,260,340) 
    627 -- ------------------ 
    628 --      "AOG_AUG"                               "zentrisch";"Basis"  - Schriftinhalkt immer nur "I" ? 
    629 --      "BWF"                                   "zentrisch";"Basis"/"zentrisch";"Mitte" 
    630 --      "BWF_ZUS"                               "zentrisch";"Basis" 
    631 --      "FKT"                                   "zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte" 
    632 --      "FKT_TEXT"                              "zentrisch";"Mitte" 
    633 --      "FreierText"                    "zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis" 
    634 --      "FreierTextHHO"                 "zentrisch";"Mitte" 
    635 --      "Friedhof"                              "zentrisch";"Basis" 
    636 --      "Gewanne"                               "zentrisch";"Basis"/"zentrisch";"Mitte" 
    637 --      "GFK"                                   "zentrisch";"Basis"/"zentrisch";"Mitte" 
    638 --      "HNR"                                   "zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"  --> Hausnummer, group gebaeude 
    639 --      "HHO"                                   "zentrisch";"Mitte"  -- HHO = objekthoehe zu ax_gebaeude? 
    640 --      "NAM"                                   "zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis" 
    641 --      "SPO"                                   "zentrisch";"Basis"/ 
    642 --      "Vorratsbehaelter"              "zentrisch";"Basis" 
    643 --      "WeitereHoehe"                  "zentrisch";"Mitte" 
    644 --      "ZAE_NEN"                               "zentrisch";"Basis" 
    645 --      "ZNM"                                   "zentrisch";"Basis"/"linksbÃŒndig";"Basis" 
    646  
    647 --* Layer "ap_pto_stra" 
    648 --                          hor ; ver / hor ; ver  
    649 --      "BezKlassifizierungStrasse" "zent.";"Basis"     / "linksbÃŒndig";"Basis" 
    650 --      "Platz"                                 "zentrisch";"Basis" / "zentrisch";"Mitte" 
    651 --      "Strasse"                               "zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis" 
    652 --      "Weg"                                   "zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis" 
    653  
    654 --* geplanter layer "ap_pto_wasser" 
    655 --      "StehendesGewaesser"    "zentrisch";"Basis" 
    656 --      "Fliessgewaesser"               "zentrisch";"Basis"/"linksbÃŒndig";"Basis" 
    657  
    658581 
    659582-- FlurstÃŒcke eines EigentÃŒmers 
     
    662585-- Dieser View liefert nur die (einfache) Buchungsart "GrundstÃŒck" 
    663586-- Solche FÀlle wie "Erbbaurecht an GrundstÃŒck" oder "Wohnungs-/Teileigentum an aufgeteiltes GrundstÃŒck" 
    664 -- oder "Miteigentum an aufteteiltes GrundstÃŒck" fehlen in deisere Auswertung. 
     587-- oder "Miteigentum an aufgeteiltes GrundstÃŒck" fehlen in dieser Auswertung. 
    665588-- Dazu siehe: "rechte_eines_eigentuemers". 
    666589 
    667 -- Das Ergbenis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation 
     590-- Das Ergebnis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation 
    668591-- oder einer einfachen Datenbank. 
    669592 
    670 -- Auch ein Export als Shape ist moeglich (dafuer: geom hinzugefuegt, Feldnamen gekuerzt) 
     593-- Auch ein Export als Shape ist moeglich (dafÃŒr: geom hinzugefÃŒgt, Feldnamen gekÃŒrzt) 
    671594-- Kommando: 
    672595--  pgsql2shp -h localhost -p 5432 -f "/data/.../alkis_fs_gemeinde.shp"  [db-name]  public.flurstuecke_eines_eigentuemers 
     
    676599-- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle >istGebucht> Flurstueck 
    677600--                                              *-> Bezirk                *-> Buchungsart     *-> Gemarkung 
    678  
    679 -- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx". 
    680601 
    681602CREATE OR REPLACE VIEW flurstuecke_eines_eigentuemers  
     
    700621      p.nachnameoderfirma          AS nachname --,  
    701622   -- p.vorname  
    702    FROM       ax_person              p 
    703         JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id  
    704         JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id  
    705         JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von  
    706         JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id  
    707         JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk  
    708         JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id  
    709         JOIN  ax_buchungsstelle      s    ON s.gml_id = bgs.beziehung_von  
    710         JOIN  ax_buchungsstelle_buchungsart art ON s.buchungsart = art.wert  
    711         JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = s.gml_id 
    712         JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von  
    713         JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
    714    WHERE p.nachnameoderfirma LIKE 'Gemeinde %'   -- ** Bei Bedarf anpassen! 
    715      AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person 
    716      AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch 
    717      AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch 
    718      AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> Buchungs-Stelle 
     623   FROM   ax_person              p 
     624     JOIN ax_namensnummer        n   -- Namennummer >benennt> Person 
     625       ON p.gml_id = n.benennt 
     626     JOIN ax_buchungsblatt       g   -- Namensnummer >istBestandteilVon> Grundbuch 
     627       ON n.istbestandteilvon = g.gml_id 
     628     JOIN ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk  
     629     JOIN ax_buchungsstelle      s   -- Buchungs-Stelle >istBestandteilVon> Grundbuch 
     630       ON s.istbestandteilvon = g.gml_id 
     631     JOIN ax_buchungsstelle_buchungsart art  
     632       ON s.buchungsart = art.wert  
     633     JOIN ax_flurstueck          f  -- Flurstueck >istGebucht> Buchungs-Stelle 
     634       ON f.istgebucht = s.gml_id 
     635     JOIN ax_gemarkung           k     
     636       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
     637   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen! 
    719638     AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL 
    720639     AND s.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL 
    721640   ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer; 
    722 COMMENT ON VIEW flurstuecke_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen.'; 
     641 
     642COMMENT ON VIEW flurstuecke_eines_eigentuemers  
     643  IS 'Nur einfache Buchungsart "GrundstÃŒck". Muster fÃŒr Export: Suchkriterium nach Bedarf anpassen.'; 
     644 
    723645 
    724646-- Rechte eines EigentÃŒmers 
     
    736658-- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx". 
    737659 
     660-- DROP VIEW rechte_eines_eigentuemers; 
    738661CREATE OR REPLACE VIEW rechte_eines_eigentuemers  
    739662AS 
     
    753676      sh.zaehler || '/' || sh.nenner AS buchg_anteil_herr,  
    754677      arth.bezeichner              AS buchgsa_herr,  
    755       bss.beziehungsart            AS bez_art, 
    756678      artd.bezeichner              AS buchgsa_dien,  
    757679      sd.laufendenummer            AS bvnr_dien,  
     
    761683      p.nachnameoderfirma          AS nachname --,   
    762684   -- p.vorname  
    763    FROM       ax_person              p 
    764         JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id  
    765         JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id  
    766         JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von  
    767         JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id  
    768         JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk  
    769         JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id  
    770         JOIN  ax_buchungsstelle      sh   ON sh.gml_id = bgs.beziehung_von  -- herrschende Buchung 
    771         JOIN  ax_buchungsstelle_buchungsart arth ON sh.buchungsart = arth.wert  
    772         JOIN  alkis_beziehungen      bss  ON sh.gml_id = bss.beziehung_von 
    773         JOIN  ax_buchungsstelle      sd   ON sd.gml_id = bss.beziehung_zu   -- dienende Buchung 
    774         JOIN  ax_buchungsstelle_buchungsart artd ON sd.buchungsart = artd.wert  
    775         JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = sd.gml_id 
    776         JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von  
    777         JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
    778    WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen! 
    779      AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person 
    780      AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch 
    781      AND bgs.beziehungsart = 'istBestandteilVon' -- B-Stelle herr   >> Grundbuch 
    782      AND bss.beziehungsart in ('an','zu')        -- B-Stelle herr.  >> B-Stelle dien. 
    783      AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> B-Stelle dien 
     685   FROM   ax_person              p 
     686     JOIN ax_namensnummer        n    -- Namennummer >benennt> Person 
     687       ON p.gml_id = n.benennt 
     688     JOIN ax_buchungsblatt       g    -- Namensnummer >istBestandteilVon> Grundbuch 
     689       ON n.istBestandteilVon = g.gml_id 
     690     JOIN ax_buchungsblattbezirk b     
     691       ON g.land = b.land AND g.bezirk = b.bezirk  
     692     JOIN ax_buchungsstelle      sh  -- B-Stelle herr >istBestandteilVon> Grundbuch 
     693       ON sh.istbestandteilvon = g.gml_id  -- herrschende Buchung 
     694     JOIN ax_buchungsstelle_buchungsart arth  
     695       ON sh.buchungsart = arth.wert  
     696     JOIN ax_buchungsstelle      sd   -- B-Stelle herr.  >an/zu> B-Stelle dien. 
     697       ON (sd.gml_id =ANY(sh.an) OR sd.gml_id = ANY(sh.zu) ) 
     698     JOIN ax_buchungsstelle_buchungsart artd  
     699       ON sd.buchungsart = artd.wert 
     700     JOIN ax_flurstueck          f    -- Flurstueck  >istGebucht> B-Stelle dien      
     701       ON f.istgebucht = sd.gml_id 
     702     JOIN ax_gemarkung           k     
     703       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
     704   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!     
    784705     AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL 
    785706     AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL 
    786707   ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, sh.laufendenummer; 
     708 
    787709COMMENT ON VIEW rechte_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen. Dies ergÀnzt "flurstuecke_eines_eigentuemers" um die FÀlle mit besonderen Buchungen.'; 
    788  
    789 -- Die 2 Views nur fuer Entwicklung:  
    790  
    791 --      CREATE OR REPLACE VIEW beziehungen_redundant  
    792 --      AS 
    793 --       SELECT * 
    794 --         FROM alkis_beziehungen AS bezalt 
    795 --         WHERE EXISTS 
    796 --                 (SELECT ogc_fid 
    797 --                       FROM alkis_beziehungen AS bezneu 
    798 --                      WHERE bezalt.beziehung_von = bezneu.beziehung_von 
    799 --                        AND bezalt.beziehung_zu  = bezneu.beziehung_zu 
    800 --                        AND bezalt.beziehungsart = bezneu.beziehungsart 
    801 --                        AND bezalt.ogc_fid       < bezneu.ogc_fid 
    802 --                      ); 
    803 --      COMMENT ON VIEW beziehungen_redundant IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.'; 
    804 -- 
    805 --      CREATE OR REPLACE VIEW beziehungen_redundant_in_delete 
    806 --      AS 
    807 --      SELECT * 
    808 --       FROM alkis_beziehungen AS bezalt 
    809 --       WHERE EXISTS 
    810 --                 (SELECT ogc_fid 
    811 --                       FROM alkis_beziehungen AS bezneu 
    812 --                      WHERE bezalt.beziehung_von = bezneu.beziehung_von 
    813 --                        AND bezalt.beziehung_zu  = bezneu.beziehung_zu 
    814 --                        AND bezalt.beziehungsart = bezneu.beziehungsart 
    815 --                        AND bezalt.ogc_fid       < bezneu.ogc_fid 
    816 --                      ) 
    817 --               -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf, 
    818 --               -- die aktuell noch in der Delete-Tabelle stehen 
    819 --               AND EXISTS 
    820 --                      (SELECT ogc_fid 
    821 --                       FROM delete 
    822 --                       WHERE bezalt.beziehung_von = substr(featureid, 1, 16) 
    823 --                              OR bezalt.beziehung_zu  = substr(featureid, 1, 16) 
    824 --                      ); 
    825 --      COMMENT ON VIEW beziehungen_redundant_in_delete IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.'; 
    826  
    827  
    828 -- Suche nach Fehler durch "Replace" 
    829 -- Wenn ax_flurstueck ÃŒber "replace" ausgetauscht wird und dabei gleichzeitig eine andere  
    830 -- Buchungsstelle bekommt, dann bleibt die alte Buchungsstelle in den alkis_beziehungen. 
    831 -- Mail PostNAS Mailingliste von 2013-02-20 
    832 CREATE OR REPLACE VIEW mehrfache_buchung_zu_fs 
    833 AS 
    834   SELECT f.gml_id, count(b.ogc_fid) AS anzahl 
    835     FROM ax_flurstueck f 
    836     JOIN alkis_beziehungen b 
    837       ON f.gml_id = b.beziehung_von  
    838   WHERE b.beziehungsart = 'istGebucht' 
    839   GROUP BY f.gml_id 
    840   HAVING count(b.ogc_fid) > 1; 
    841  
    842 -- Noch einfacher? - Auch ohne JOIN wird das selbe Ergebnis geliefert. 
    843 -- Doppelte Verweise zÀhlen ohne zu prÃŒfen, ob die gml_id in ax_flurstueck existiert. 
    844 --   SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl 
    845 --     FROM alkis_beziehungen b 
    846 --    WHERE b.beziehungsart = 'istGebucht' 
    847 --   GROUP BY b.beziehung_von 
    848 --   HAVING count(b.ogc_fid) > 1; 
    849  
    850 COMMENT ON VIEW mehrfache_buchung_zu_fs  
    851  IS 'Fehler: Nach replace von ax_flurtstueck mit einer neuen ax_buchungsstelle bleibt die alte Verbindung in alkis_beziehungen'; 
    852710 
    853711 
     
    863721 SELECT l.gml_id, l.gemeinde, l.lage, l.hausnummer  
    864722   FROM ax_gebaeude g 
    865    JOIN alkis_beziehungen b ON b.beziehung_von = g.gml_id 
    866    JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id 
    867   WHERE b.beziehungsart = 'zeigtAuf' 
     723   JOIN ax_lagebezeichnungmithausnummer l   
     724     ON l.gml_id = ANY(g.zeigtauf)  
    868725  GROUP BY l.gml_id, l.gemeinde, l.lage, l.hausnummer 
    869726  HAVING count(g.gml_id) > 1; 
    870727 
    871728COMMENT ON VIEW fehler_hausnummer_mehrfach_verwendet 
    872  IS 'Fehler: Nach replace von ax_lagebezeichnungmithausnummer mit einem neuen ax_gebaeude bleibt die alte Verbindung in alkis_beziehungen'; 
    873  
    874  
    875 -- Der umgekehrt Fall ist erlaubt. 
    876 -- GebÀude hat mehrere Nummern. 
    877  
     729 IS 'Fehlersuche: Nach replace von ax_lagebezeichnungmithausnummer mit einem neuen ax_gebaeude bleibt die alte Verbindung?'; 
     730 
     731-- Ein GebÀude hat mehrere Nummern. 
    878732CREATE OR REPLACE VIEW adressen_zu_gebauede_mit_mehreren_hausnummern 
    879733AS 
    880  SELECT l.gml_id, l.gemeinde, l.lage, l.hausnummer -- Anzeige der Adressfelder 
    881  FROM ax_gebaeude g1 
    882    JOIN alkis_beziehungen b ON b.beziehung_von = g1.gml_id 
    883    JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id 
    884   WHERE b.beziehungsart = 'zeigtAuf' AND g1.gml_id IN -- Subquery sucht GebÀude mit meherern Hausnummen 
     734 SELECT g1.gml_id, l1.gemeinde, l1.lage, l1.hausnummer -- Anzeige der Adressfelder 
     735   FROM ax_gebaeude g1 
     736   JOIN ax_lagebezeichnungmithausnummer l1 ON l1.gml_id = ANY(g1.zeigtauf) 
     737  WHERE g1.gml_id IN -- Subquery sucht GebÀude mit meherern Hausnummen 
    885738   (SELECT g2.gml_id  
    886     FROM ax_gebaeude g2 
    887     JOIN alkis_beziehungen b ON b.beziehung_von = g2.gml_id 
    888     JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id 
    889    WHERE b.beziehungsart = 'zeigtAuf' 
    890    GROUP BY g2.gml_id  
    891    HAVING count(l.gml_id) > 1); 
     739      FROM ax_gebaeude g2 
     740      JOIN ax_lagebezeichnungmithausnummer l2 ON l2.gml_id = ANY(g2.zeigtauf) 
     741     GROUP BY g2.gml_id  
     742   HAVING count(l2.gml_id) > 1) 
     743   ORDER BY l1.gemeinde, l1.lage, l1.hausnummer; 
    892744 
    893745COMMENT ON VIEW adressen_zu_gebauede_mit_mehreren_hausnummern 
     
    911763-- Analyse: FÀlle mit Erbbaurecht 
    912764-- Benutzt den Baustein-View "doppelverbindung" 
     765 
     766--   +++ BESSER: analog doppelverbindung direkt codieren 
     767 
    913768CREATE OR REPLACE VIEW erbbaurechte_suchen 
    914769AS 
    915   SELECT f.gml_id,  
    916   --f.flurstueckskennzeichen, 
    917     f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler AS fssuch, f.nenner 
     770  SELECT f.gml_id, f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler AS fssuch, f.nenner 
    918771   FROM ax_flurstueck    f  
    919772   JOIN doppelverbindung d     -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS 
    920773     ON d.fsgml = f.gml_id  
     774 
     775 
     776 
    921777   JOIN ax_buchungsstelle s    -- Buchungs-Stelle 
    922778     ON d.bsgml = s.gml_id  
    923779   WHERE s.buchungsart = 2101; 
    924780 
     781 
     782 
     783 
    925784COMMENT ON VIEW erbbaurechte_suchen 
    926785 IS 'Suche nach FÀllen mit Buchungsrt 2101=Erbbaurecht'; 
    927  
    928  
    929 -- Probleme mit der Trigger-Function "update_fields_beziehungen()" 
    930 -- Manchmal kann zu einer gml_id in "alkis_beziehungen" die zustÀndige Tabelle nicht gefunden werden. 
    931 -- Nach Änderung der Trigger-Function am 10.12.2013 wird die Beziehung trotzdem eingetragen, 
    932 -- nur die Felder "von_typename" und "beginnt" bleiben leer. 
    933 -- 2014-01-31: Dieser Trigger wird nicht mehr verwendet. 
    934  
    935      -- Diese FÀlle anzeigen: 
    936 --     CREATE OR REPLACE VIEW beziehungsproblem_faelle 
    937 --    AS 
    938 --       SELECT * 
    939 --        FROM alkis_beziehungen 
    940 --        WHERE beginnt IS NULL; 
    941 --     COMMENT ON VIEW beziehungsproblem_faelle 
    942 --      IS 'Fehlersuche: Im Trigger "update_fields_beziehungen()" wurde das Objekt in seiner Tabelle nicht gefunden, darum kein "beginnt" in "alkis_beziehungen" eingetragen.'; 
    943  
    944      -- Wie viele sind das? 
    945 --     CREATE OR REPLACE VIEW beziehungsproblem_zaehler 
    946 --     AS 
    947 --       SELECT count(ogc_fid) AS anzahl 
    948 --         FROM alkis_beziehungen 
    949 --        WHERE beginnt IS NULL; 
    950 --     COMMENT ON VIEW beziehungsproblem_faelle 
    951 --      IS 'Fehlersuche: Wie oft fehlt das beginnt-Feld in alkis_beziehungen?'; 
    952786 
    953787 
     
    955789-- Diese FÀlle fÃŒhren möglicherweise zu unvollstÀndiger Ausgabe beim Export "alle FlurstÃŒcke an einer Straße" 
    956790-- weil nur Lagebezeichnung MIT und OHNE Hausnummer gesucht wird, aber keine gleich lautende Gewanne. 
     791 
     792-- DROP VIEW strasse_als_gewanne; 
    957793CREATE OR REPLACE VIEW strasse_als_gewanne 
    958794AS 
    959795  SELECT k.gemeinde, k.lage AS strassenschluessel, 
    960       -- k.bezeichnung      AS strassenname, 
    961          o.unverschluesselt AS gewanne, 
    962          count(fo.gml_id) AS anzahl_fs_gewanne 
     796         o.unverschluesselt AS gewanne_und_strasse, -- = k.bezeichnung = Straßenname 
     797         count(f.gml_id) AS anzahl_fs_gewanne 
    963798  FROM ax_lagebezeichnungkatalogeintrag k   -- Straßentabelle 
    964799  JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne 
    965800    ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen 
    966   -- Join Gewanne auf FlurstÃŒcke um nur solche FÀlle anzuzeigen, die verwendet werden  
     801  -- Join Gewanne auf FlurstÃŒcke um nur solche FÀlle anzuzeigen, die hier verwendet werden. 
    967802  -- UND die auch in der gleichen Gemeinde liegen. 
    968803  -- Sonst könnte zufÀllige Namensgleichheiten aus verschiedenen Gemeinden geben.  
    969   JOIN alkis_beziehungen vo 
    970     ON o.gml_id=vo.beziehung_zu AND vo.beziehungsart= 'zeigtAuf'  
    971   JOIN ax_flurstueck fo 
    972     ON fo.gml_id=vo.beziehung_von 
    973  WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraßenschlÃŒssel 
    974   GROUP BY k.gemeinde, k.lage, o.unverschluesselt --, k.bezeichnung 
    975   ORDER BY k.gemeinde, k.lage, o.unverschluesselt --, k.bezeichnung 
    976   ; 
     804  JOIN ax_flurstueck f               --  Flurst. >zeigtAuf>  Lage 
     805    ON o.gml_id = ANY(f.zeigtauf)   
     806 WHERE f.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraßenschlÃŒssel 
     807  GROUP BY k.gemeinde, k.lage, o.unverschluesselt 
     808  ORDER BY k.gemeinde, k.lage, o.unverschluesselt; 
    977809 
    978810COMMENT ON VIEW strasse_als_gewanne 
     
    982814-- Wie zuvor, aber die FlurstÃŒcke werden hier nicht nur gezÀhlt sondern auch aufgelistet. 
    983815-- das Format des FlusrtÃŒckskennzeichens kann in die Mapbender-Navigation eingegeben werden. 
     816 
    984817CREATE OR REPLACE VIEW strasse_als_gewanne_flst 
    985818AS 
    986   SELECT -- fo.gml_id,  
    987          fo.gemarkungsnummer || '-' || fo.flurnummer || '-' || fo.zaehler::text || COALESCE ('/' || fo.nenner::text, '') AS flstkennz, 
     819  SELECT fo.gemarkungsnummer || '-' || fo.flurnummer || '-' || fo.zaehler::text || COALESCE ('/' || fo.nenner::text, '') AS flstkennz, 
    988820         k.gemeinde,  
    989821         o.unverschluesselt AS gewanne, 
    990       -- k.bezeichnung AS strassenname, 
    991822         k.lage        -- AS strassen_schluessel 
    992823  FROM ax_lagebezeichnungkatalogeintrag k   -- Straßentabelle 
    993824  JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne 
    994825    ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen  
    995   JOIN alkis_beziehungen vo 
    996     ON o.gml_id=vo.beziehung_zu AND vo.beziehungsart= 'zeigtAuf'  
    997   JOIN ax_flurstueck fo 
    998     ON fo.gml_id=vo.beziehung_von 
     826   JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage 
     827    ON o.gml_id = ANY(fo.zeigtauf)   
    999828 WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraßenschlÃŒssel 
    1000829  ORDER BY fo.gemarkungsnummer, fo.flurnummer, fo.zaehler, k.gemeinde, k.bezeichnung; 
     
    1004833 
    1005834 
    1006  
    1007835-- Suche nach Fehlern in den Daten, die moeglicherweise aus der Migration stammen und 
    1008836-- im Rahmen der Nachmigration noch korrigiert werden muessen. 
     
    1011839AS 
    1012840  SELECT DISTINCT p.gml_id, p.nachnameoderfirma, p.vorname,  
    1013         a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer 
    1014      -- , b1.import_id AS import1, b2.import_id AS import2 
    1015     FROM ax_person         p 
    1016     JOIN alkis_beziehungen b1 ON b1.beziehung_von=p.gml_id 
    1017     JOIN ax_anschrift      a1 ON a1.gml_id=b1.beziehung_zu 
    1018     JOIN alkis_beziehungen b2 ON b2.beziehung_von=p.gml_id 
    1019     JOIN ax_anschrift      a2 ON a2.gml_id=b2.beziehung_zu 
    1020     WHERE b1.beziehungsart='hat'  
    1021       AND b2.beziehungsart='hat' 
    1022       AND a1.gml_id    <>  a2.gml_id 
    1023       AND a1.ort_post   =  a2.ort_post 
    1024       AND a1.strasse    like trim(a2.strasse, '.') || '%' 
    1025       AND a1.hausnummer =  a2.hausnummer 
     841         a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer 
     842    FROM ax_person    p 
     843    JOIN ax_anschrift a1 ON a1.gml_id = ANY(p.hat) 
     844    JOIN ax_anschrift a2 ON a2.gml_id = ANY(p.hat) 
     845   WHERE a1.gml_id <> a2.gml_id 
     846      AND a1.ort_post =  a2.ort_post 
     847      AND a1.strasse like trim(a2.strasse, '.') || '%' 
     848      AND a1.hausnummer = a2.hausnummer 
     849      AND p.endet IS NULL AND a1.endet IS NULL and a2.endet IS NULL 
    1026850    ORDER BY p.nachnameoderfirma, p.vorname; 
    1027851 
    1028852COMMENT ON VIEW nachmigration_aehnliche_anschriften 
    1029  IS 'Zu einer Person gibt es mehrere Anschriften, die in Ort und Hausnummer identisch sind und beim Straßennemen entweder auch identisch sind oder eine AbkÃŒrzung mit Punkt enthalten.'; 
     853 IS 'Nachmigration? Zu einer Person gibt es mehrere Anschriften, die in Ort und Hausnummer identisch sind und beim Straßennemen entweder auch identisch sind oder eine AbkÃŒrzung mit Punkt enthalten.'; 
     854 
     855 
     856-- Bevor alle inversen Relationen im Schema auskommentiert werden, 
     857-- noch mal in die Datenbank schauen, ob nicht doch eine davon gefÃŒllt ist. 
     858-- Nach dem Entfernen dieser Spalten wird der View nicht mehr funktionieren  
     859-- und wird darum ebenfalls auskommentiert. 
     860 
     861/* 
     862CREATE OR REPLACE VIEW nicht_gefuellte_inverse_relationen_spalten 
     863AS 
     864  SELECT 'ax_flurstueck' AS tabelle, 'beziehtsichaufflurstueck' AS spalte,  
     865     count(gml_id) AS anzahl_eintraege 
     866  FROM ax_flurstueck WHERE NOT beziehtsichaufflurstueck IS NULL 
     867UNION 
     868  SELECT 'ax_flurstueck' AS tabelle, 'gehoertanteiligzu' AS spalte,  
     869     count(gml_id) AS anzahl_eintraege 
     870  FROM ax_flurstueck WHERE NOT gehoertanteiligzu IS NULL 
     871UNION 
     872  SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'beschreibt' AS spalte,  
     873     count(gml_id) AS anzahl_eintraege 
     874  FROM ax_lagebezeichnungohnehausnummer WHERE NOT beschreibt IS NULL 
     875UNION 
     876  SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'gehoertzu' AS spalte,  
     877     count(gml_id) AS anzahl_eintraege 
     878  FROM ax_lagebezeichnungohnehausnummer WHERE NOT gehoertzu IS NULL 
     879UNION 
     880  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'hat' AS spalte,  
     881     count(gml_id) AS anzahl_eintraege 
     882  FROM ax_lagebezeichnungmithausnummer WHERE NOT hat IS NULL 
     883UNION 
     884  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauf' AS spalte,  
     885     count(gml_id) AS anzahl_eintraege 
     886  FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauf IS NULL 
     887UNION 
     888  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauchauf' AS spalte,  
     889     count(gml_id) AS anzahl_eintraege 
     890  FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauchauf IS NULL 
     891UNION 
     892  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'gehoertzu' AS spalte,  
     893     count(gml_id) AS anzahl_eintraege 
     894  FROM ax_lagebezeichnungmithausnummer WHERE NOT gehoertzu IS NULL 
     895UNION 
     896  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'weistzum' AS spalte,  
     897     count(gml_id) AS anzahl_eintraege 
     898  FROM ax_lagebezeichnungmithausnummer WHERE NOT weistzum IS NULL 
     899UNION 
     900  SELECT 'ax_lagebezeichnungmitpseudonummer' AS tabelle, 'gehoertzu' AS spalte,  
     901     count(gml_id) AS anzahl_eintraege 
     902  FROM ax_lagebezeichnungmitpseudonummer WHERE NOT gehoertzu IS NULL 
     903--UNION 
     904--  -- ist gefÃŒllt! 
     905--  SELECT 'ax_georeferenziertegebaeudeadresse' AS tabelle, 'hatauch' AS spalte,  
     906--     count(gml_id) AS anzahl_eintraege 
     907--  FROM ax_georeferenziertegebaeudeadresse WHERE NOT hatauch IS NULL 
     908UNION 
     909  SELECT 'ax_sicherungspunkt' AS tabelle, 'beziehtsichauf' AS spalte,  
     910     count(gml_id) AS anzahl_eintraege 
     911  FROM ax_sicherungspunkt WHERE NOT beziehtsichauf IS NULL 
     912UNION 
     913  SELECT 'ax_sicherungspunkt' AS tabelle, 'gehoertzu' AS spalte,  
     914     count(gml_id) AS anzahl_eintraege 
     915  FROM ax_sicherungspunkt WHERE NOT gehoertzu IS NULL 
     916-- Punktort: ist gefÃŒllt (nicht invers) 
     917--UNION 
     918--  SELECT 'ax_punktortag' AS tabelle, 'istteilvon' AS spalte,  
     919--     count(gml_id) AS anzahl_eintraege 
     920--  FROM ax_punktortag WHERE NOT istteilvon IS NULL 
     921--UNION 
     922--  SELECT 'ax_punktortau' AS tabelle, 'istteilvon' AS spalte,  
     923--     count(gml_id) AS anzahl_eintraege 
     924--  FROM ax_punktortau WHERE NOT istteilvon IS NULL 
     925--UNION 
     926--  SELECT 'ax_punktortta' AS tabelle, 'istteilvon' AS spalte,  
     927--     count(gml_id) AS anzahl_eintraege 
     928--  FROM ax_punktortta WHERE NOT istteilvon IS NULL 
     929UNION 
     930  SELECT 'ax_person' AS tabelle, 'weistauf' AS spalte,  
     931     count(gml_id) AS anzahl_eintraege 
     932  FROM ax_person WHERE NOT weistauf IS NULL 
     933UNION 
     934  SELECT 'ax_person' AS tabelle, 'uebtaus' AS spalte,  
     935     count(gml_id) AS anzahl_eintraege 
     936  FROM ax_person WHERE NOT uebtaus IS NULL 
     937UNION 
     938  SELECT 'ax_person' AS tabelle, 'besitzt' AS spalte,  
     939     count(gml_id) AS anzahl_eintraege 
     940  FROM ax_person WHERE NOT besitzt IS NULL 
     941UNION 
     942  SELECT 'ax_person' AS tabelle, 'zeigtauf' AS spalte,  
     943     count(gml_id) AS anzahl_eintraege 
     944  FROM ax_person WHERE NOT zeigtauf IS NULL 
     945UNION 
     946  SELECT 'ax_person' AS tabelle, 'benennt' AS spalte,  
     947     count(gml_id) AS anzahl_eintraege 
     948  FROM ax_person WHERE NOT benennt IS NULL 
     949UNION 
     950  SELECT 'ax_anschrift' AS tabelle, 'beziehtsichauf' AS spalte,  
     951     count(gml_id) AS anzahl_eintraege 
     952  FROM ax_anschrift WHERE NOT beziehtsichauf IS NULL 
     953UNION 
     954  SELECT 'ax_anschrift' AS tabelle, 'gehoertzu' AS spalte,  
     955     count(gml_id) AS anzahl_eintraege 
     956  FROM ax_anschrift WHERE NOT gehoertzu IS NULL 
     957UNION 
     958  SELECT 'ax_verwaltung' AS tabelle, 'beziehtsichauf' AS spalte,  
     959     count(gml_id) AS anzahl_eintraege 
     960  FROM ax_verwaltung WHERE NOT beziehtsichauf IS NULL 
     961UNION 
     962  SELECT 'ax_vertretung' AS tabelle, 'vertritt' AS spalte,  
     963     count(gml_id) AS anzahl_eintraege 
     964  FROM ax_vertretung WHERE NOT vertritt IS NULL 
     965UNION 
     966  SELECT 'ax_buchungsblatt' AS tabelle, 'bestehtaus' AS spalte,  
     967     count(gml_id) AS anzahl_eintraege 
     968  FROM ax_buchungsblatt WHERE NOT bestehtaus IS NULL 
     969UNION 
     970  SELECT 'ax_buchungsstelle' AS tabelle, 'grundstueckbestehtaus' AS spalte,  
     971     count(gml_id) AS anzahl_eintraege 
     972  FROM ax_buchungsstelle WHERE NOT grundstueckbestehtaus IS NULL 
     973UNION 
     974  SELECT 'ax_gebaeude' AS tabelle, 'haengtzusammenmit' AS spalte,  
     975     count(gml_id) AS anzahl_eintraege 
     976  FROM ax_gebaeude WHERE NOT haengtzusammenmit IS NULL 
     977; 
     978 
     979COMMENT ON VIEW nicht_gefuellte_relationen_spalten 
     980 IS 'ÜberprÃŒfung auf nicht gefÃŒllte Inverse Relationen.  
     981Funktioniert nur, solange diese nicht entfernt wurden.'; 
     982 
     983*/ 
     984 
     985-- Daraus resultiert der folgende Patch fÃŒr bereits angelegte Datenbanken: 
     986/* 
     987        ALTER TABLE ax_flurstueck                    DROP COLUMN beziehtsichaufflurstueck; 
     988        ALTER TABLE ax_flurstueck                    DROP COLUMN gehoertanteiligzu; 
     989        ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN beschreibt; 
     990        ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN gehoertzu; 
     991        ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN hat; 
     992        ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauf; 
     993        ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauchauf; 
     994        ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN gehoertzu; 
     995        ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN weistzum; 
     996        ALTER TABLE ax_lagebezeichnungmitpseudonummer DROP COLUMN gehoertzu; 
     997        ALTER TABLE ax_sicherungspunkt               DROP COLUMN beziehtsichauf; 
     998        ALTER TABLE ax_sicherungspunkt               DROP COLUMN gehoertzu; 
     999        ALTER TABLE ax_person                        DROP COLUMN weistauf; 
     1000        ALTER TABLE ax_person                        DROP COLUMN uebtaus; 
     1001        ALTER TABLE ax_person                        DROP COLUMN besitzt; 
     1002        ALTER TABLE ax_person                        DROP COLUMN zeigtauf; 
     1003        ALTER TABLE ax_person                        DROP COLUMN benennt; 
     1004        ALTER TABLE ax_anschrift                     DROP COLUMN beziehtsichauf; 
     1005        ALTER TABLE ax_anschrift                     DROP COLUMN gehoertzu; 
     1006        ALTER TABLE ax_verwaltung                    DROP COLUMN beziehtsichauf; 
     1007        ALTER TABLE ax_vertretung                    DROP COLUMN vertritt; 
     1008        ALTER TABLE ax_buchungsblatt                 DROP COLUMN bestehtaus; 
     1009        ALTER TABLE ax_buchungsstelle                DROP COLUMN grundstueckbestehtaus; 
     1010        ALTER TABLE ax_gebaeude                      DROP COLUMN haengtzusammenmit; 
     1011*/ 
    10301012 
    10311013 
Note: See TracChangeset for help on using the changeset viewer.