Changeset 363


Ignore:
Timestamp:
03/01/16 16:53:57 (8 years ago)
Author:
frank.jaeger
Message:

Neuer View zur Fehlersuche in räumlich begrenzten NBA-Verfahren

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/sichten.sql

    r353 r363  
    3838--  2014-09-30 Umbenennung SchlÃŒsseltabellen (Prefix) 
    3939--  2015-03-19 View "suche_grosse_gb_bestaende" 
     40--  2016-03-01 bereits auskommentierte-Substring-JOIN entfernt, neuer View "fehlersuche_nba_person" 
    4041 
    4142-- Bausteine fÃŒr andere Views: 
     
    6263         0                      AS ba_dien 
    6364    FROM ax_flurstueck f1 
    64   --JOIN ax_buchungsstelle b1   ON f1.istgebucht = substring(b1.gml_id,1,16) 
    6565    JOIN ax_buchungsstelle b1   ON f1.istgebucht = b1.gml_id 
    6666 UNION 
     
    7070         dien.buchungsart       AS ba_dien   -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung 
    7171    FROM ax_flurstueck f2 
    72   --JOIN ax_buchungsstelle dien ON f2.istgebucht = substring(dien.gml_id,1,16) 
    7372    JOIN ax_buchungsstelle dien ON f2.istgebucht = dien.gml_id 
    74   --JOIN ax_buchungsstelle b2   ON substring(dien.gml_id,1,16) = ANY (b2.an) 
    7573    JOIN ax_buchungsstelle b2   ON dien.gml_id = ANY (b2.an)  -- auch "zu" ? 
    7674   WHERE dien.endet IS NULL;   -- FÃŒr das zusÀtzliche Verbindungselement die Historie HIER ausschließen,  
     
    9997    FROM ax_flurstueck fm                    -- FlurstÃŒck Mit 
    10098    JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
    101     --ON substring(lm.gml_id,1,16) = ANY (fm.weistauf) 
    10299      ON lm.gml_id = ANY (fm.weistauf) 
    103100    JOIN ax_lagebezeichnungkatalogeintrag sm 
     
    111108    FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE 
    112109    JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
    113     --ON substring(lo.gml_id,1,16) = ANY (fo.zeigtauf) 
    114110      ON lo.gml_id = ANY (fo.zeigtauf) 
    115111    JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
     
    203199    ON s.buchungsart = b.wert  
    204200  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    205   --ON substring(gb.gml_id,1,16) = s.istbestandteilvon 
    206201    ON gb.gml_id = s.istbestandteilvon 
    207202  JOIN ax_buchungsblattbezirk z  
    208203    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    209204  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    210   --ON substring(gb.gml_id,1,16) = nn.istbestandteilvon 
    211205    ON  gb.gml_id = nn.istbestandteilvon 
    212206  JOIN ax_person p                      -- NamNum >benennt> Person  
    213   --ON substring(p.gml_id,1,16) = nn.benennt 
    214207    ON p.gml_id = nn.benennt 
    215208  LEFT JOIN ax_anschrift a  
    216   --ON substring(a.gml_id,1,16) = ANY (p.hat) 
    217209    ON a.gml_id = ANY (p.hat) 
    218210 
     
    224216       FROM ax_namensnummer r  
    225217       JOIN ax_buchungsblatt gr 
    226        --ON r.istbestandteilvon = substring(gr.gml_id,1,16) 
    227218         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
    228219      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
     
    308299    ON s.buchungsart = b.wert  
    309300  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    310   --ON substring(gb.gml_id,1,16) = s.istbestandteilvon 
    311301    ON gb.gml_id = s.istbestandteilvon 
    312302  JOIN ax_buchungsblattbezirk z  
    313303    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    314304  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    315   --ON substring(gb.gml_id,1,16) = nn.istbestandteilvon 
    316305    ON gb.gml_id = nn.istbestandteilvon 
    317306  JOIN ax_person p                      -- NamNum >benennt> Person  
    318   --ON substring(p.gml_id,1,16) = nn.benennt 
    319307    ON p.gml_id = nn.benennt 
    320308  LEFT JOIN ax_anschrift a  
    321   --ON substring(a.gml_id,1,16) = ANY (p.hat) 
    322309    ON a.gml_id = ANY (p.hat) 
    323310 
     
    329316       FROM ax_namensnummer r  
    330317       JOIN ax_buchungsblatt gr 
    331        --ON r.istbestandteilvon = substring(gr.gml_id,1,16) 
    332318         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
    333319      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg  -- Rechtsgemeinschaft 
     
    367353  FROM ax_buchungsblatt gb  
    368354  JOIN ax_namensnummer  nn   
    369   --ON substring(gb.gml_id,1,16) = nn.istbestandteilvon 
    370355    ON gb.gml_id = nn.istbestandteilvon 
    371356  WHERE NOT nn.artderrechtsgemeinschaft IS NULL 
     
    459444   FROM ax_flurstueck f  
    460445   JOIN ap_pto p  
    461    --ON substring(f.gml_id,1,16) = ANY(p.dientzurdarstellungvon) 
    462446     ON f.gml_id = ANY(p.dientzurdarstellungvon)  
    463447  WHERE f.endet IS NULL AND p.endet IS NULL; 
     
    473457 FROM   ax_flurstueck f  
    474458 LEFT JOIN ap_pto p  
    475  --ON substring(f.gml_id,1,16) = ANY(p.dientzurdarstellungvon) 
    476459   ON f.gml_id = ANY(p.dientzurdarstellungvon) 
    477460 WHERE p.gml_id IS NULL 
     
    588571           l.hausnummer  
    589572      FROM   ax_flurstueck f  
    590     --JOIN   ax_lagebezeichnungmithausnummer l   ON  substring(l.gml_id,1,16) = ANY (f.weistauf) 
    591573      JOIN   ax_lagebezeichnungmithausnummer l   ON  l.gml_id = ANY(f.weistauf) 
    592574      JOIN   ax_gemeinde g   ON l.kreis=g.kreis  AND l.gemeinde=g.gemeinde  
     
    651633   FROM   ax_person              p 
    652634     JOIN ax_namensnummer        n   -- Namennummer >benennt> Person 
    653      --ON substring(p.gml_id,1,16) = n.benennt 
    654635       ON p.gml_id = n.benennt 
    655636     JOIN ax_buchungsblatt       g   -- Namensnummer >istBestandteilVon> Grundbuch 
    656      --ON n.istbestandteilvon = substring(g.gml_id,1,16) 
    657637       ON n.istbestandteilvon = g.gml_id 
    658638     JOIN ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk  
    659639     JOIN ax_buchungsstelle      s   -- Buchungs-Stelle >istBestandteilVon> Grundbuch 
    660      --ON s.istbestandteilvon = substring(g.gml_id,1,16) 
    661640       ON s.istbestandteilvon = g.gml_id 
    662641     JOIN v_bs_buchungsart art  
    663642       ON s.buchungsart = art.wert  
    664643     JOIN ax_flurstueck          f  -- Flurstueck >istGebucht> Buchungs-Stelle 
    665      --ON f.istgebucht = substring(s.gml_id,1,16) 
    666644       ON f.istgebucht = s.gml_id 
    667645     JOIN ax_gemarkung           k     
     
    717695   FROM   ax_person              p 
    718696     JOIN ax_namensnummer        n    -- Namennummer >benennt> Person 
    719      --ON substring(p.gml_id,1,16) = n.benennt 
    720697       ON p.gml_id = n.benennt 
    721698     JOIN ax_buchungsblatt       g    -- Namensnummer >istBestandteilVon> Grundbuch 
    722      --ON n.istBestandteilVon = substring(g.gml_id,1,16) 
    723699       ON n.istBestandteilVon = g.gml_id 
    724700     JOIN ax_buchungsblattbezirk b     
    725701       ON g.land = b.land AND g.bezirk = b.bezirk  
    726702     JOIN ax_buchungsstelle      sh  -- B-Stelle herr >istBestandteilVon> Grundbuch 
    727      --ON sh.istbestandteilvon = substring(g.gml_id,1,16) 
    728703       ON sh.istbestandteilvon = g.gml_id -- herrschende Buchung 
    729704     JOIN v_bs_buchungsart arth  
    730705       ON sh.buchungsart = arth.wert  
    731706     JOIN ax_buchungsstelle      sd   -- B-Stelle herr.  >an/zu> B-Stelle dien. 
    732      --ON (substring(sd.gml_id,1,16) = ANY(sh.an) OR substring(sd.gml_id,1,16) = ANY(sh.zu)) 
    733707       ON (sd.gml_id = ANY(sh.an) OR sd.gml_id = ANY(sh.zu)) 
    734708     JOIN v_bs_buchungsart artd  
    735709       ON sd.buchungsart = artd.wert 
    736710     JOIN ax_flurstueck          f    -- Flurstueck  >istGebucht> B-Stelle dien      
    737      --ON f.istgebucht = substring(sd.gml_id,1,16) 
    738711       ON f.istgebucht = sd.gml_id 
    739712     JOIN ax_gemarkung           k     
     
    759732   FROM ax_gebaeude g 
    760733   JOIN ax_lagebezeichnungmithausnummer l   
    761    --ON substring(l.gml_id,1,16) = ANY(g.zeigtauf) 
    762734     ON l.gml_id = ANY(g.zeigtauf) 
    763735  WHERE g.endet IS NULL AND l.endet IS NULL 
     
    776748  FROM ax_gebaeude g 
    777749  JOIN fehler_hausnummer_mehrfach_verwendet f 
    778   --ON substring(f.gml_id::text, 1, 16) = ANY(g.zeigtauf) 
    779750    ON f.gml_id = ANY(g.zeigtauf) 
    780751  JOIN ax_lagebezeichnungkatalogeintrag k 
     
    797768   (SELECT g2.gml_id  
    798769      FROM ax_gebaeude g2 
    799     --JOIN ax_lagebezeichnungmithausnummer l2 ON substring(l2.gml_id,1,16) = ANY(g2.zeigtauf) 
    800770      JOIN ax_lagebezeichnungmithausnummer l2 ON l2.gml_id = ANY(g2.zeigtauf) 
    801771     WHERE g2.endet IS NULL AND l2.endet IS NULL 
     
    900870  JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne 
    901871    ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen  
    902    JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage 
    903    --ON substring(o.gml_id,1,16) = ANY(fo.zeigtauf) 
    904      ON o.gml_id = ANY(fo.zeigtauf)   
     872  JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage 
     873    ON o.gml_id = ANY(fo.zeigtauf)   
    905874 WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraßenschlÃŒssel 
    906875   AND k.endet IS NULL AND o.endet IS NULL AND fo.endet IS NULL  
     
    919888         a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer 
    920889    FROM ax_person    p 
    921   --JOIN ax_anschrift a1 ON substring(a1.gml_id,1,16) = ANY(p.hat) 
    922890    JOIN ax_anschrift a1 ON a1.gml_id = ANY(p.hat) 
    923   --JOIN ax_anschrift a2 ON substring(a2.gml_id,1,16) = ANY(p.hat) 
    924891    JOIN ax_anschrift a2 ON a2.gml_id = ANY(p.hat) 
    925892   WHERE a1.gml_id <> a2.gml_id 
     
    933900 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.'; 
    934901 
    935  
    936 -- Bevor alle inversen Relationen im Schema auskommentiert werden, 
    937 -- noch mal in die Datenbank schauen, ob nicht doch eine davon gefÃŒllt ist. 
    938 -- Nach dem Entfernen dieser Spalten wird der View nicht mehr funktionieren  
    939 -- und wird darum ebenfalls auskommentiert. 
    940  
    941 /* 
    942 CREATE OR REPLACE VIEW nicht_gefuellte_inverse_relationen_spalten 
    943 AS 
    944   SELECT 'ax_flurstueck' AS tabelle, 'beziehtsichaufflurstueck' AS spalte,  
    945      count(gml_id) AS anzahl_eintraege 
    946   FROM ax_flurstueck WHERE NOT beziehtsichaufflurstueck IS NULL 
    947 UNION 
    948   SELECT 'ax_flurstueck' AS tabelle, 'gehoertanteiligzu' AS spalte,  
    949      count(gml_id) AS anzahl_eintraege 
    950   FROM ax_flurstueck WHERE NOT gehoertanteiligzu IS NULL 
    951 UNION 
    952   SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'beschreibt' AS spalte,  
    953      count(gml_id) AS anzahl_eintraege 
    954   FROM ax_lagebezeichnungohnehausnummer WHERE NOT beschreibt IS NULL 
    955 UNION 
    956   SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'gehoertzu' AS spalte,  
    957      count(gml_id) AS anzahl_eintraege 
    958   FROM ax_lagebezeichnungohnehausnummer WHERE NOT gehoertzu IS NULL 
    959 UNION 
    960   SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'hat' AS spalte,  
    961      count(gml_id) AS anzahl_eintraege 
    962   FROM ax_lagebezeichnungmithausnummer WHERE NOT hat IS NULL 
    963 UNION 
    964   SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauf' AS spalte,  
    965      count(gml_id) AS anzahl_eintraege 
    966   FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauf IS NULL 
    967 UNION 
    968   SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauchauf' AS spalte,  
    969      count(gml_id) AS anzahl_eintraege 
    970   FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauchauf IS NULL 
    971 UNION 
    972   SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'gehoertzu' AS spalte,  
    973      count(gml_id) AS anzahl_eintraege 
    974   FROM ax_lagebezeichnungmithausnummer WHERE NOT gehoertzu IS NULL 
    975 UNION 
    976   SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'weistzum' AS spalte,  
    977      count(gml_id) AS anzahl_eintraege 
    978   FROM ax_lagebezeichnungmithausnummer WHERE NOT weistzum IS NULL 
    979 UNION 
    980   SELECT 'ax_lagebezeichnungmitpseudonummer' AS tabelle, 'gehoertzu' AS spalte,  
    981      count(gml_id) AS anzahl_eintraege 
    982   FROM ax_lagebezeichnungmitpseudonummer WHERE NOT gehoertzu IS NULL 
    983 --UNION 
    984 --  -- ist gefÃŒllt! 
    985 --  SELECT 'ax_georeferenziertegebaeudeadresse' AS tabelle, 'hatauch' AS spalte,  
    986 --     count(gml_id) AS anzahl_eintraege 
    987 --  FROM ax_georeferenziertegebaeudeadresse WHERE NOT hatauch IS NULL 
    988 UNION 
    989   SELECT 'ax_sicherungspunkt' AS tabelle, 'beziehtsichauf' AS spalte,  
    990      count(gml_id) AS anzahl_eintraege 
    991   FROM ax_sicherungspunkt WHERE NOT beziehtsichauf IS NULL 
    992 UNION 
    993   SELECT 'ax_sicherungspunkt' AS tabelle, 'gehoertzu' AS spalte,  
    994      count(gml_id) AS anzahl_eintraege 
    995   FROM ax_sicherungspunkt WHERE NOT gehoertzu IS NULL 
    996 -- Punktort: ist gefÃŒllt (nicht invers) 
    997 --UNION 
    998 --  SELECT 'ax_punktortag' AS tabelle, 'istteilvon' AS spalte,  
    999 --     count(gml_id) AS anzahl_eintraege 
    1000 --  FROM ax_punktortag WHERE NOT istteilvon IS NULL 
    1001 --UNION 
    1002 --  SELECT 'ax_punktortau' AS tabelle, 'istteilvon' AS spalte,  
    1003 --     count(gml_id) AS anzahl_eintraege 
    1004 --  FROM ax_punktortau WHERE NOT istteilvon IS NULL 
    1005 --UNION 
    1006 --  SELECT 'ax_punktortta' AS tabelle, 'istteilvon' AS spalte,  
    1007 --     count(gml_id) AS anzahl_eintraege 
    1008 --  FROM ax_punktortta WHERE NOT istteilvon IS NULL 
    1009 UNION 
    1010   SELECT 'ax_person' AS tabelle, 'weistauf' AS spalte,  
    1011      count(gml_id) AS anzahl_eintraege 
    1012   FROM ax_person WHERE NOT weistauf IS NULL 
    1013 UNION 
    1014   SELECT 'ax_person' AS tabelle, 'uebtaus' AS spalte,  
    1015      count(gml_id) AS anzahl_eintraege 
    1016   FROM ax_person WHERE NOT uebtaus IS NULL 
    1017 UNION 
    1018   SELECT 'ax_person' AS tabelle, 'besitzt' AS spalte,  
    1019      count(gml_id) AS anzahl_eintraege 
    1020   FROM ax_person WHERE NOT besitzt IS NULL 
    1021 UNION 
    1022   SELECT 'ax_person' AS tabelle, 'zeigtauf' AS spalte,  
    1023      count(gml_id) AS anzahl_eintraege 
    1024   FROM ax_person WHERE NOT zeigtauf IS NULL 
    1025 UNION 
    1026   SELECT 'ax_person' AS tabelle, 'benennt' AS spalte,  
    1027      count(gml_id) AS anzahl_eintraege 
    1028   FROM ax_person WHERE NOT benennt IS NULL 
    1029 UNION 
    1030   SELECT 'ax_anschrift' AS tabelle, 'beziehtsichauf' AS spalte,  
    1031      count(gml_id) AS anzahl_eintraege 
    1032   FROM ax_anschrift WHERE NOT beziehtsichauf IS NULL 
    1033 UNION 
    1034   SELECT 'ax_anschrift' AS tabelle, 'gehoertzu' AS spalte,  
    1035      count(gml_id) AS anzahl_eintraege 
    1036   FROM ax_anschrift WHERE NOT gehoertzu IS NULL 
    1037 UNION 
    1038   SELECT 'ax_verwaltung' AS tabelle, 'beziehtsichauf' AS spalte,  
    1039      count(gml_id) AS anzahl_eintraege 
    1040   FROM ax_verwaltung WHERE NOT beziehtsichauf IS NULL 
    1041 UNION 
    1042   SELECT 'ax_vertretung' AS tabelle, 'vertritt' AS spalte,  
    1043      count(gml_id) AS anzahl_eintraege 
    1044   FROM ax_vertretung WHERE NOT vertritt IS NULL 
    1045 UNION 
    1046   SELECT 'ax_buchungsblatt' AS tabelle, 'bestehtaus' AS spalte,  
    1047      count(gml_id) AS anzahl_eintraege 
    1048   FROM ax_buchungsblatt WHERE NOT bestehtaus IS NULL 
    1049 UNION 
    1050   SELECT 'ax_buchungsstelle' AS tabelle, 'grundstueckbestehtaus' AS spalte,  
    1051      count(gml_id) AS anzahl_eintraege 
    1052   FROM ax_buchungsstelle WHERE NOT grundstueckbestehtaus IS NULL 
    1053 UNION 
    1054   SELECT 'ax_gebaeude' AS tabelle, 'haengtzusammenmit' AS spalte,  
    1055      count(gml_id) AS anzahl_eintraege 
    1056   FROM ax_gebaeude WHERE NOT haengtzusammenmit IS NULL 
    1057 ; 
    1058  
    1059 COMMENT ON VIEW nicht_gefuellte_relationen_spalten 
    1060  IS 'ÜberprÃŒfung auf nicht gefÃŒllte Inverse Relationen.  
    1061 Funktioniert nur, solange diese nicht entfernt wurden.'; 
    1062  
    1063 */ 
    1064  
    1065 -- Daraus resultiert der folgende Patch fÃŒr bereits angelegte Datenbanken: 
    1066 /* 
    1067         ALTER TABLE ax_flurstueck                    DROP COLUMN beziehtsichaufflurstueck; 
    1068         ALTER TABLE ax_flurstueck                    DROP COLUMN gehoertanteiligzu; 
    1069         ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN beschreibt; 
    1070         ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN gehoertzu; 
    1071         ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN hat; 
    1072         ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauf; 
    1073         ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauchauf; 
    1074         ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN gehoertzu; 
    1075         ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN weistzum; 
    1076         ALTER TABLE ax_lagebezeichnungmitpseudonummer DROP COLUMN gehoertzu; 
    1077         ALTER TABLE ax_sicherungspunkt               DROP COLUMN beziehtsichauf; 
    1078         ALTER TABLE ax_sicherungspunkt               DROP COLUMN gehoertzu; 
    1079         ALTER TABLE ax_person                        DROP COLUMN weistauf; 
    1080         ALTER TABLE ax_person                        DROP COLUMN uebtaus; 
    1081         ALTER TABLE ax_person                        DROP COLUMN besitzt; 
    1082         ALTER TABLE ax_person                        DROP COLUMN zeigtauf; 
    1083         ALTER TABLE ax_person                        DROP COLUMN benennt; 
    1084         ALTER TABLE ax_anschrift                     DROP COLUMN beziehtsichauf; 
    1085         ALTER TABLE ax_anschrift                     DROP COLUMN gehoertzu; 
    1086         ALTER TABLE ax_verwaltung                    DROP COLUMN beziehtsichauf; 
    1087         ALTER TABLE ax_vertretung                    DROP COLUMN vertritt; 
    1088         ALTER TABLE ax_buchungsblatt                 DROP COLUMN bestehtaus; 
    1089         ALTER TABLE ax_buchungsstelle                DROP COLUMN grundstueckbestehtaus; 
    1090         ALTER TABLE ax_gebaeude                      DROP COLUMN haengtzusammenmit; 
    1091 */ 
    1092  
    1093902-- Anteile der Namensnummern am Blatt aufsummieren. 
    1094903-- BlÀtter mit RechtsverhÀltnis (Beschrieb) nicht beachten. 
     
    1107916  FROM ax_buchungsblatt g 
    1108917  JOIN ax_namensnummer n  
    1109   --ON substring(g.gml_id,1,16) = n.istbestandteilvon 
    1110918    ON g.gml_id = n.istbestandteilvon 
    1111919  WHERE g.endet IS NULL AND n.endet IS NULL 
     
    1115923        SELECT gml_id  
    1116924        FROM ax_namensnummer nr  
    1117         --ERE substring(g.gml_id,1,16) = nr.istbestandteilvon 
    1118925        WHERE g.gml_id = nr.istbestandteilvon 
    1119926          AND NOT nr.artderrechtsgemeinschaft IS NULL 
     
    12121019 IS 'Suche nach GB-Blatt mit vielen FlurstÃŒcken.'; 
    12131020 
     1021 
     1022-- Ein typischer Fehler im NBA-Verfahren erzeugt SekundÀrbestÀnde, bei denen EigentÃŒmer fehlen. 
     1023-- Dies kommt so zustande: 
     1024--  - FlurstÃŒck und Person sind zum Zeitpunkt der Erstabgabe im Katasterbezirk bereits vorhanden. 
     1025--  - Die FlurstÃŒcke werden auf Stadtgebiet gefiltert. 
     1026--  - Die Person hat keine Verbindung zu einem FlurstÃŒck im Ausschnitt und wird nicht mit ausgeliefert.  
     1027--  - SpÀter wird eine neue Relation zwischen FS--Buchung--GBBlatt--Namensnummer--Person  gebildet. 
     1028--  - Die Relation wird abgegeben (gml_id der ax_person) in "ax_namensnummer.benennt" 
     1029--  - Aber die Person fehlt im SekundÀrbestand, sie wurde nicht nachgeliefert. 
     1030-- Solche FÀlle sollen hier gezielt gefunden werden: 
     1031 
     1032--           DROP VIEW fehlersuche_nba_person_mit_fs; 
     1033CREATE OR REPLACE VIEW fehlersuche_nba_person_mit_fs 
     1034AS 
     1035 SELECT 
     1036  -- FlurstÃŒck 
     1037    f.gml_id                             AS fsgml, 
     1038  --f.flurstueckskennzeichen, 
     1039    f.gemarkungsnummer || '-' ||  f.flurnummer || '-' || f.zaehler || 
     1040      coalesce('/' || f.nenner, '') AS fs_kennz, 
     1041  -- Grundbuch 
     1042    gb.gml_id                            AS gbgml, 
     1043    gb.bezirk || '-' || gb.buchungsblattnummermitbuchstabenerweiterung AS gb_kennz, 
     1044  -- Buchungsstelle (GrundstÃŒck) 
     1045    s.laufendenummer                     AS bu_lfd,      -- BVNR 
     1046  -- NamensNummer (Normalfall mit Person) 
     1047    nn.laufendenummernachdin1421         AS nam_lfd, 
     1048  -- Person 
     1049    nn.benennt                           AS fehlende_person_gmlid 
     1050  --p.gml_id                             AS psgml, 
     1051  --p.vorname, p.nachnameoderfirma, 
     1052  FROM ax_flurstueck    f               -- FlurstÃŒck 
     1053  JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 
     1054    ON d.fsgml = f.gml_id 
     1055  JOIN ax_buchungsstelle s              -- Buchungs-Stelle 
     1056    ON d.bsgml = s.gml_id 
     1057  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
     1058    ON gb.gml_id = s.istbestandteilvon 
     1059  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     1060    ON  gb.gml_id = nn.istbestandteilvon 
     1061  LEFT JOIN ax_person p                 -- NamNum >benennt> Person  
     1062    ON p.gml_id = nn.benennt 
     1063  LEFT JOIN ax_anschrift a  
     1064    ON a.gml_id = ANY (p.hat) 
     1065  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 
     1066    AND nn.artderrechtsgemeinschaft IS NULL  -- Sonderzeilen ausblenden 
     1067    AND p.gml_id IS NULL                     -- Hier sollte eine Person vorhanden sein!! 
     1068  ORDER BY f.flurstueckskennzeichen,  
     1069           gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer, 
     1070           nn.laufendenummernachdin1421; 
     1071 
     1072COMMENT ON VIEW fehlersuche_nba_person_mit_fs  
     1073 IS 'Suche nach typischem Fehler "Person fehlt" nach einer NBA-Aktualisierung mit geometrischen Filter. Mit FlurstÃŒcken.'; 
     1074 
     1075-- Durch den JOIN auf FlurstÃŒcke werden Personen-FÀlle ggf. mehrfach aufgefÃŒhrt. 
     1076-- Um schneller die Übersicht ÃŒber die *Anzahl* zu bekommen, lÀsst man die FS besser weg. 
     1077 
     1078--           DROP VIEW fehlersuche_nba_person; 
     1079CREATE OR REPLACE VIEW fehlersuche_nba_person 
     1080AS 
     1081 SELECT 
     1082    gb.gml_id                            AS gbgml, 
     1083    gb.bezirk || '-' || gb.buchungsblattnummermitbuchstabenerweiterung AS gb_kennz, 
     1084    nn.laufendenummernachdin1421         AS nam_lfd, 
     1085    nn.benennt                           AS fehlende_person_gmlid 
     1086  FROM ax_buchungsblatt  gb 
     1087  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
     1088    ON  gb.gml_id = nn.istbestandteilvon 
     1089  LEFT JOIN ax_person p                 -- NamNum >benennt> Person  
     1090    ON p.gml_id = nn.benennt 
     1091  WHERE gb.endet IS NULL AND nn.endet IS NULL AND p.endet IS NULL 
     1092    AND nn.artderrechtsgemeinschaft IS NULL  -- Sonderzeilen ausblenden 
     1093    AND p.gml_id IS NULL                     -- Hier sollte eine Person vorhanden sein!! 
     1094  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nn.laufendenummernachdin1421; 
     1095 
     1096COMMENT ON VIEW fehlersuche_nba_person  
     1097 IS 'Suche nach typischem Fehler "Person fehlt" nach einer NBA-Aktualisierung mit geometrischen Filter. OHNE FlurstÃŒcke.'; 
     1098 
     1099 
     1100-- In der SQLite-Version der Datenbank sind die Relationen "hat" und "benennt" nicht gefÃŒllt. 
     1101-- Darum ÃŒber die zentrale Beziehungen-Tabelle gehen! 
     1102CREATE OR REPLACE VIEW fehlersuche_nba_person_old_Style 
     1103AS 
     1104 SELECT 
     1105    gb.gml_id AS gbgml, 
     1106    gb.bezirk || '-' || gb.buchungsblattnummermitbuchstabenerweiterung AS gb_kennz, 
     1107    nn.laufendenummernachdin1421  AS nam_lfd, 
     1108    a2.beziehung_zu               AS fehlende_person_gmlid 
     1109  FROM ax_buchungsblatt  gb   
     1110  JOIN alkis_beziehungen a1 ON a1.beziehung_zu=gb.gml_id  AND a1.beziehungsart='istBestandteilVon' 
     1111  JOIN ax_namensnummer   nn ON a1.beziehung_von=nn.gml_id 
     1112  JOIN alkis_beziehungen a2 ON a2.beziehung_von=nn.gml_id AND a2.beziehungsart='benennt'  
     1113  LEFT JOIN ax_person p     ON a2.beziehung_zu=p.gml_id  
     1114  WHERE gb.endet IS NULL AND nn.endet IS NULL AND p.endet IS NULL 
     1115    AND nn.artderrechtsgemeinschaft IS NULL  AND p.gml_id IS NULL 
     1116  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nn.laufendenummernachdin1421; 
     1117 
     1118COMMENT ON VIEW fehlersuche_nba_person_old_Style  
     1119 IS 'Suche nach typischem Fehler "Person fehlt" nach einer NBA-Aktualisierung mit geometrischen Filter. Relation ÃŒber alkis_beziehungen, dann klappt das auch in SQLite.'; 
     1120 
    12141121-- END -- 
Note: See TracChangeset for help on using the changeset viewer.