Ignore:
Timestamp:
09/11/14 17:23:54 (10 years ago)
Author:
frank.jaeger
Message:

Kleinere Korrekturen an den Import-Scripten.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/import/sichten.sql

    r330 r331  
    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.  
     32--  2014-09-02 Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen. Relationen nun ÃŒber Spalten in den Objekttabellen.  
     33--  2014-09-11 Neu: View "fehlersuche_namensanteile_je_blatt", substring(gml_id) bei Relation-Join, mehr "endet IS NULL" 
     34 
     35-- ToDo: Einige Views sind sehr langsam geworden. Z.B. exp_csv welcher doppelverbindung verwendet. 
     36--       Dadurch Export aus Bauchauskunft sehr langsam! 
     37--       Derzeit provisorische Version von "doppelverbindung" (schnell aber nicht ganz korrrekt). 
    3438 
    3539-- Bausteine fÃŒr andere Views: 
     
    5054--           DROP VIEW public.doppelverbindung; 
    5155 
     56/*  -- korrekte Version, leider unertrÀglich langsam, z.B. beim Export von CSV aus der Auskunft 
     57 
    5258CREATE OR REPLACE VIEW public.doppelverbindung 
    5359AS 
    5460  -- 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 
     61  SELECT f1.gml_id              AS fsgml,    -- gml_id FlurstÃŒck 
     62         b1.gml_id              AS bsgml,    -- gml_id Buchungs 
     63         0                      AS ba_dien 
    5864    FROM ax_flurstueck f1 
    59     JOIN ax_buchungsstelle b1   ON f1.istgebucht = b1.gml_id 
     65    JOIN ax_buchungsstelle b1   ON f1.istgebucht = substring(b1.gml_id,1,16) 
    6066 UNION 
    6167  -- 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 
     68  SELECT f2.gml_id              AS fsgml,    -- gml_id FlurstÃŒck 
     69         b2.gml_id              AS bsgml,    -- gml_id Buchung - (herrschendes GB) 
     70         dien.buchungsart       AS ba_dien   -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung 
    6571    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,  
     72    JOIN ax_buchungsstelle dien ON f2.istgebucht = substring(dien.gml_id,1,16) 
     73    JOIN ax_buchungsstelle b2   ON substring(dien.gml_id,1,16) = ANY (b2.an)  -- auch "zu" ? 
     74   WHERE dien.endet IS NULL;   -- FÃŒr das zusÀtzliche Verbindungselement die Historie HIER ausschließen,  
    6975                               -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet. 
     76*/ 
     77 
     78-- TEST: Schneller, wenn auf Subtring verzichtet wird?  Ja! 
     79-- Aber: Verbindungen ÃŒber aktualisierte, also lange ID's werden nicht gefunden.   
     80CREATE OR REPLACE VIEW public.doppelverbindung 
     81AS 
     82  -- FS >istGebucht> Buchungstelle 
     83  SELECT f1.gml_id              AS fsgml,    -- gml_id FlurstÃŒck 
     84         b1.gml_id              AS bsgml,    -- gml_id Buchungs 
     85         0                      AS ba_dien 
     86    FROM ax_flurstueck f1 
     87    JOIN ax_buchungsstelle b1   ON f1.istgebucht = substring(b1.gml_id,1,16) 
     88 UNION 
     89  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle 
     90  SELECT f2.gml_id              AS fsgml,    -- gml_id FlurstÃŒck 
     91         b2.gml_id              AS bsgml,    -- gml_id Buchung - (herrschendes GB) 
     92         dien.buchungsart       AS ba_dien   -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung 
     93    FROM ax_flurstueck f2 
     94    JOIN ax_buchungsstelle dien ON f2.istgebucht = substring(dien.gml_id,1,16) 
     95  --JOIN ax_buchungsstelle b2   ON substring(dien.gml_id,1,16) = ANY (b2.an)    -- korrekt 
     96    JOIN ax_buchungsstelle b2   ON           dien.gml_id       = ANY (b2.an)    -- schnell 
     97   WHERE dien.endet IS NULL;   -- Nur fÃŒr das zusÀtzliche Verbindungselement die Historie HIER ausschließen,  
     98                               -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet. 
    7099 
    71100COMMENT ON VIEW public.doppelverbindung  
    72  IS 'ALKIS-Beziehung von FlurstÃŒck zu Buchung. UNION-Zusammenfassung des einfachen Falls mit direkter Buchung und des Falles mit Recht einer Buchungsstelle an einer anderen Buchungsstelle.'; 
     101 IS 'ALKIS-Beziehung von FlurstÃŒck zu Buchung. UNION-Zusammenfassung des einfachen Falls mit direkter Buchung und des Falles mit Recht einer Buchungsstelle an einer anderen Buchungsstelle. 
     102Dies ist ausschließlich gedacht zur Verwendung in anderen Views um diese einfacher zu machen.'; 
     103 
     104/* Test zur Zeitmessung 
     105 
     106SELECT dien.gml_id, herr.gml_id 
     107FROM ax_buchungsstelle dien  
     108JOIN ax_buchungsstelle herr  ON dien.gml_id = ANY (herr.an) 
     109WHERE dien.endet IS NULL AND herr.endet IS NULL 
     110LIMIT 300; 
     111-- 78 ms 
     112 
     113SELECT dien.gml_id, herr.gml_id 
     114FROM ax_buchungsstelle dien  
     115JOIN ax_buchungsstelle herr  ON substring(dien.gml_id,1,16) = ANY (herr.an) 
     116WHERE dien.endet IS NULL AND herr.endet IS NULL 
     117LIMIT 300; 
     118-- 19454 ms 
     119 
     120 
     121*/ 
    73122 
    74123-- Test-Ausgabe: Ein paar FÀlle mit "Recht an" 
    75124--   SELECT * FROM doppelverbindung WHERE ba_dien > 0 LIMIT 20; 
    76  
     125-- Nach Umstellung auf PostNAS 0.8 - mit ANY() und Substring - sehr lange Antwortzeit in PG 8.4 
    77126 
    78127-- Ein View, der die Verbindung von FlurstÃŒck zur Straßentabelle fÃŒr zwei verschiedene FÀlle herstellt. 
     
    81130 
    82131--           DROP VIEW public.flst_an_strasse; 
    83  
    84132CREATE OR REPLACE VIEW public.flst_an_strasse 
    85133AS 
     
    90138    FROM ax_flurstueck fm                    -- FlurstÃŒck Mit 
    91139    JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT 
    92       ON lm.gml_id = ANY (fm.weistauf)   
     140      ON substring(lm.gml_id,1,16) = ANY (fm.weistauf)   
    93141    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 
     142      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  
     143   WHERE lm.endet IS NULL AND fm.endet IS NULL -- nichts Historisches 
    96144 UNION 
    97145  -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag 
     
    101149    FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE 
    102150    JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE 
    103       ON lo.gml_id = ANY (fo.zeigtauf)   
     151      ON substring(lo.gml_id,1,16) = ANY (fo.zeigtauf)   
    104152    JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE 
    105153      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 
     154   WHERE lo.endet IS NULL AND fo.endet IS NULL; -- nichts Historisches 
    107155 
    108156COMMENT ON VIEW public.flst_an_strasse  
     
    184232  FROM ax_flurstueck    f               -- FlurstÃŒck 
    185233  JOIN doppelverbindung d               -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung 
    186     ON d.fsgml = f.gml_id  
     234    ON d.fsgml = f.gml_id 
    187235  JOIN ax_gemarkung g                   -- entschlÃŒsseln 
    188236    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    189237  JOIN ax_buchungsstelle s              -- Buchungs-Stelle 
    190     ON d.bsgml = s.gml_id  
     238    ON d.bsgml = s.gml_id 
    191239  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart 
    192240    ON s.buchungsart = b.wert  
    193241  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    194     ON gb.gml_id = s.istbestandteilvon 
     242    ON substring(gb.gml_id,1,16) = s.istbestandteilvon 
    195243  JOIN ax_buchungsblattbezirk z  
    196244    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    197245  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    198     ON gb.gml_id = nn.istbestandteilvon 
     246    ON substring(gb.gml_id,1,16) = nn.istbestandteilvon 
    199247  JOIN ax_person p                      -- NamNum >benennt> Person  
    200     ON p.gml_id = nn.benennt 
     248    ON substring(p.gml_id,1,16) = nn.benennt 
    201249  LEFT JOIN ax_anschrift a  
    202     ON a.gml_id = ANY (p.hat) 
     250    ON substring(a.gml_id,1,16) = ANY (p.hat) 
    203251 
    204252  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
     
    209257       FROM ax_namensnummer r  
    210258       JOIN ax_buchungsblatt gr 
    211          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
     259         ON r.istbestandteilvon = substring(gr.gml_id,1,16) -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
    212260      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft 
    213261   ON rg.gml_id = gb.gml_id  -- zum GB 
     
    292340    ON s.buchungsart = b.wert  
    293341  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt 
    294     ON gb.gml_id = s.istbestandteilvon 
     342    ON substring(gb.gml_id,1,16) = s.istbestandteilvon 
    295343  JOIN ax_buchungsblattbezirk z  
    296344    ON gb.land=z.land AND gb.bezirk=z.bezirk  
    297345  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum 
    298     ON gb.gml_id = nn.istbestandteilvon 
     346    ON substring(gb.gml_id,1,16) = nn.istbestandteilvon 
    299347  JOIN ax_person p                      -- NamNum >benennt> Person  
    300     ON p.gml_id = nn.benennt 
     348    ON substring(p.gml_id,1,16) = nn.benennt 
    301349  LEFT JOIN ax_anschrift a  
    302     ON a.gml_id = ANY (p.hat) 
     350    ON substring(a.gml_id,1,16) = ANY (p.hat) 
    303351 
    304352  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen: 
     
    309357       FROM ax_namensnummer r  
    310358       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 
     359         ON r.istbestandteilvon = substring(gr.gml_id,1,16) -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)  
     360      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg  -- Rechtsgemeinschaft 
    313361   ON rg.gml_id = gb.gml_id  -- zum GB 
    314362 
     
    345393     nn.beschriebderrechtsgemeinschaft 
    346394  FROM ax_buchungsblatt gb  
    347   JOIN ax_namensnummer  nn  ON gb.gml_id = nn.istbestandteilvon 
     395  JOIN ax_namensnummer  nn  ON substring(gb.gml_id,1,16) = nn.istbestandteilvon 
    348396  WHERE NOT nn.artderrechtsgemeinschaft IS NULL 
    349397    AND gb.endet IS NULL AND nn.endet IS NULL -- Historie weglassen 
     
    435483        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen 
    436484   FROM ax_flurstueck f  
    437    JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon)  
    438   WHERE f.endet IS NULL; 
     485   JOIN ap_pto p ON substring(f.gml_id,1,16) = ANY(p.dientzurdarstellungvon)  
     486  WHERE f.endet IS NULL AND p.endet IS NULL; 
    439487-- TIPP: mit zusÀtzlichem LIMIT auftrufen! 
    440488 
     
    447495        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen 
    448496 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! 
     497 LEFT JOIN ap_pto p ON substring(f.gml_id,1,16) = ANY(p.dientzurdarstellungvon)  
     498 WHERE p.gml_id IS NULL 
     499   AND f.endet IS NULL; 
     500-- TIPP: mit zusÀtzlichem LIMIT aufrufen! 
    453501 
    454502COMMENT ON VIEW flstnr_ohne_manuelle_position  
     
    496544      ON r.artderfestlegung = a.wert 
    497545    LEFT JOIN ax_dienststelle d 
    498       ON r.land   = d.land  AND r.stelle = d.stelle  
     546      ON r.land=d.land AND r.stelle=d.stelle  
    499547  WHERE r.endet IS NULL AND d.endet IS NULL ; 
    500548 
     
    561609           l.hausnummer  
    562610      FROM   ax_flurstueck f  
    563       JOIN   ax_lagebezeichnungmithausnummer l   ON  l.gml_id = ANY (f.weistauf) 
     611      JOIN   ax_lagebezeichnungmithausnummer l   ON  substring(l.gml_id,1,16) = ANY (f.weistauf) 
    564612      JOIN   ax_gemeinde g   ON l.kreis=g.kreis  AND l.gemeinde=g.gemeinde  
    565613      JOIN   ax_lagebezeichnungkatalogeintrag s  ON  l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage 
     
    623671   FROM   ax_person              p 
    624672     JOIN ax_namensnummer        n   -- Namennummer >benennt> Person 
    625        ON p.gml_id = n.benennt 
     673       ON substring(p.gml_id,1,16) = n.benennt 
    626674     JOIN ax_buchungsblatt       g   -- Namensnummer >istBestandteilVon> Grundbuch 
    627        ON n.istbestandteilvon = g.gml_id 
     675       ON n.istbestandteilvon = substring(g.gml_id,1,16) 
    628676     JOIN ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk  
    629677     JOIN ax_buchungsstelle      s   -- Buchungs-Stelle >istBestandteilVon> Grundbuch 
    630        ON s.istbestandteilvon = g.gml_id 
     678       ON s.istbestandteilvon = substring(g.gml_id,1,16) 
    631679     JOIN ax_buchungsstelle_buchungsart art  
    632680       ON s.buchungsart = art.wert  
    633681     JOIN ax_flurstueck          f  -- Flurstueck >istGebucht> Buchungs-Stelle 
    634        ON f.istgebucht = s.gml_id 
     682       ON f.istgebucht = substring(s.gml_id,1,16) 
    635683     JOIN ax_gemarkung           k     
    636684       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
     
    685733   FROM   ax_person              p 
    686734     JOIN ax_namensnummer        n    -- Namennummer >benennt> Person 
    687        ON p.gml_id = n.benennt 
     735       ON substring(p.gml_id,1,16) = n.benennt 
    688736     JOIN ax_buchungsblatt       g    -- Namensnummer >istBestandteilVon> Grundbuch 
    689        ON n.istBestandteilVon = g.gml_id 
     737       ON n.istBestandteilVon = substring(g.gml_id,1,16) 
    690738     JOIN ax_buchungsblattbezirk b     
    691739       ON g.land = b.land AND g.bezirk = b.bezirk  
    692740     JOIN ax_buchungsstelle      sh  -- B-Stelle herr >istBestandteilVon> Grundbuch 
    693        ON sh.istbestandteilvon = g.gml_id -- herrschende Buchung 
     741       ON sh.istbestandteilvon = substring(g.gml_id,1,16) -- herrschende Buchung 
    694742     JOIN ax_buchungsstelle_buchungsart arth  
    695743       ON sh.buchungsart = arth.wert  
    696744     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) ) 
     745       ON (substring(sd.gml_id,1,16) = ANY(sh.an) OR substring(sd.gml_id,1,16) = ANY(sh.zu)) 
    698746     JOIN ax_buchungsstelle_buchungsart artd  
    699747       ON sd.buchungsart = artd.wert 
    700748     JOIN ax_flurstueck          f    -- Flurstueck  >istGebucht> B-Stelle dien      
    701        ON f.istgebucht = sd.gml_id 
     749       ON f.istgebucht = substring(sd.gml_id,1,16) 
    702750     JOIN ax_gemarkung           k     
    703751       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer  
     
    722770   FROM ax_gebaeude g 
    723771   JOIN ax_lagebezeichnungmithausnummer l   
    724      ON l.gml_id = ANY(g.zeigtauf)  
     772     ON substring(l.gml_id,1,16) = ANY(g.zeigtauf) 
     773  WHERE g.endet IS NULL AND l.endet IS NULL 
    725774  GROUP BY l.gml_id, l.gemeinde, l.lage, l.hausnummer 
    726775  HAVING count(g.gml_id) > 1; 
     
    735784   FROM ax_gebaeude g1 
    736785   JOIN ax_lagebezeichnungmithausnummer l1 ON l1.gml_id = ANY(g1.zeigtauf) 
    737   WHERE g1.gml_id IN -- Subquery sucht GebÀude mit meherern Hausnummen 
     786  WHERE g1.endet IS NULL AND l1.endet IS NULL  
     787    AND g1.gml_id IN -- Subquery sucht GebÀude mit meherern Hausnummen 
    738788   (SELECT g2.gml_id  
    739789      FROM ax_gebaeude g2 
    740       JOIN ax_lagebezeichnungmithausnummer l2 ON l2.gml_id = ANY(g2.zeigtauf) 
     790      JOIN ax_lagebezeichnungmithausnummer l2 ON substring(l2.gml_id,1,16) = ANY(g2.zeigtauf) 
     791     WHERE g2.endet IS NULL AND l2.endet IS NULL 
    741792     GROUP BY g2.gml_id  
    742793   HAVING count(l2.gml_id) > 1) 
     
    754805    FROM ax_buchungsstelle_buchungsart a 
    755806    JOIN ax_buchungsstelle b  ON a.wert = b.buchungsart 
     807   WHERE b.endet IS NULL 
    756808GROUP BY a.wert, a.bezeichner 
    757809ORDER BY a.wert, a.bezeichner; 
     
    772824   JOIN doppelverbindung d     -- beide FÀlle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS 
    773825     ON d.fsgml = f.gml_id  
    774  
    775  
    776  
    777826   JOIN ax_buchungsstelle s    -- Buchungs-Stelle 
    778827     ON d.bsgml = s.gml_id  
    779    WHERE s.buchungsart = 2101; 
    780  
    781  
    782  
     828   WHERE s.buchungsart = 2101 AND f.endet IS NULL AND s.endet IS NULL; 
    783829 
    784830COMMENT ON VIEW erbbaurechte_suchen 
     
    825871    ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen  
    826872   JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage 
    827     ON o.gml_id = ANY(fo.zeigtauf)   
     873    ON substring(o.gml_id,1,16) = ANY(fo.zeigtauf)   
    828874 WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraßenschlÃŒssel 
     875   AND k.endet IS NULL AND o.endet IS NULL AND fo.endet IS NULL  
    829876  ORDER BY fo.gemarkungsnummer, fo.flurnummer, fo.zaehler, k.gemeinde, k.bezeichnung; 
    830877 
     
    841888         a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer 
    842889    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) 
     890    JOIN ax_anschrift a1 ON substring(a1.gml_id,1,16) = ANY(p.hat) 
     891    JOIN ax_anschrift a2 ON substring(a2.gml_id,1,16) = ANY(p.hat) 
    845892   WHERE a1.gml_id <> a2.gml_id 
    846893      AND a1.ort_post =  a2.ort_post 
     
    10111058*/ 
    10121059 
     1060-- Anteile der Namensnummern am Blatt aufsummieren. 
     1061-- BlÀtter mit RechtsverhÀltnis (Beschrieb) nicht beachten. 
     1062-- Anzeigen, wenn die Summe nicht 1 ergibt. 
     1063-- Keine Angabe in ZÀhler/Nenner wird als 1 gewertet. 
     1064 
     1065-- Anlass zu dieser Auswertung war: 
     1066-- Wenn mit PostNAS 0.8 und Trigger "kill" (ohne Historie) eine NBA-Abgabe mit Abgabeart "3100 fallbezogen (mit Historie)" 
     1067-- konvertiert wird, dann wird Update nicht richtig verarbeitet. 
     1068-- Update setzt z.B. das endet-Datum an einen Namensnummer. Alte Namen verbleiben auf dem Grundbuch. 
     1069 
     1070CREATE OR REPLACE VIEW fehlersuche_namensanteile_je_blatt 
     1071AS 
     1072  SELECT g.gml_id, g.bezirk || '-' || g.buchungsblattnummermitbuchstabenerweiterung AS kennzeichen,  
     1073         sum(coalesce(n.zaehler/n.nenner, 1.0))::double precision AS summe_der_anteile 
     1074  FROM ax_buchungsblatt g 
     1075  JOIN ax_namensnummer n ON substring(g.gml_id,1,16) = n.istbestandteilvon 
     1076  WHERE g.endet IS NULL AND n.endet IS NULL 
     1077  GROUP BY g.gml_id, g.bezirk || '-' || g.buchungsblattnummermitbuchstabenerweiterung 
     1078  HAVING sum(coalesce(n.zaehler/n.nenner, 1)) <> 1.0::double precision 
     1079     AND (  -- die FÀlle mit einer Rechtsgemeinschaft nicht verwenden 
     1080        SELECT gml_id  
     1081        FROM ax_namensnummer nr  
     1082        WHERE substring(g.gml_id,1,16) = nr.istbestandteilvon 
     1083          AND NOT nr.artderrechtsgemeinschaft IS NULL 
     1084          AND nr.endet IS NULL 
     1085        LIMIT 1 
     1086     ) IS NULL 
     1087  LIMIT 100; 
     1088 
     1089COMMENT ON VIEW fehlersuche_namensanteile_je_blatt 
     1090 IS 'Suchen nach GB-BlÀttern bei denen die Summe der Anteile der Namensnummern nicht passt. 
     1091Mit Ausnahme von RechtsverhÀltnissen sollte sie Summe der BrÃŒche immer 1/1 ergeben.'; 
    10131092 
    10141093-- END -- 
Note: See TracChangeset for help on using the changeset viewer.