source: trunk/import/norgis_alkis_pp/postcreate.de/views_exp_csv.sql @ 396

Revision 396, 24.8 KB checked in by frank.jaeger, 6 years ago (diff)
Line 
1
2-- ===================================================================================
3--  ALKIS-PostGIS   Mapbender-Navigation und Buchauskunft fÃŒr NorGIS-ALKIS-Importer
4-- ===================================================================================
5
6-- Aufgabe:
7-- Views bereit stellen fÃŒr die ALKIS-Navigation fÃŒr Mapbender 2 und die Buch-Auskunft und spezielle WMS.
8
9-- AusfÃŒhrung in:
10-- Step "postcreate.d" des ALKIS-Importers. Hier also nur Definitionen machen, keine Daten bearbeiten.
11
12--Stand
13--  2016-02-23
14--  2016-11-24 Index auf ax.person.nachnameoderfirma fÃŒr WMS Flurstuecke_kommunal
15--  2016-12-01 exp_csv: Fehlerkorrektur bei EntschlÃŒsselung der Buchungsart
16--             Optimierte Version (ohne Doppelverbindung)
17--  2017-02-23 Spalte "fall" aus View "flst_an_strasse" im View "exp_csv_str" ausgeben.
18--             Darauf basiert ein neuer Filter im Programm "alkisexport.php".
19--                      Sortierung FS-Kennz. repariert in Views "exp_csv" und "exp_csv_str"
20--  2017-10-10 Berechtigungen rausgenommen in getrennte Datei
21--  2017-12-06 Umbenennung von "x_classic2norgis.sql" nach "views_exp_csv.sql"
22
23-- ToDo:
24--  - die alten Übersichten "pp_flur", "pp_gemarkung" und "pp_gemeinde" wieder erzeugen
25--    Siehe Script: "pp_gebiete.sql" (FÃŒllen) und Teile von "pp_definition.sql" (DB-Struktur).
26--  - Statt den View "flst_an_strasse" im View "exp_csv_str" einzubinden könnte ein 4fach-UNION schneller sein. Testen.
27
28
29-- I n d i c e s
30-- ============================
31
32-- Tabelle "ax_gemarkungsteilflur" sollte Such-Index erhalten auf "gemarkung".
33-- FÃŒr Auflistung aller Fluren zur Gemarkung in Script "alkisnav_fls", Function "EineGemarkung".
34
35
36-- Der WMS "Flurstuecke_Kommunal" (aus View "st_flurst[gkz][e|r]") wird langsam, wenn er in einer kreisweiten Datenbank ausgefÃŒhrt wird.
37-- Das Filter-Feld benötigt einen Index:
38DROP INDEX if exists ax_person_nname;
39CREATE INDEX ax_person_nname
40  ON ax_person USING btree (nachnameoderfirma COLLATE pg_catalog."default");
41
42
43-- V i e w s
44-- ============================
45
46
47-- Bausteine fÃŒr andere Views:
48-- ---------------------------
49
50-- Ein View, der die Verbindung von FlurstÃŒck zur Straßentabelle fÃŒr zwei verschiedene FÀlle herstellt.
51-- Einmal ÃŒber die Lagebezeichnung MIT Hausnummer und einmal OHNE.
52-- Dies kann als "MittelstÃŒck" in den anderen Views eingefÃŒgt werden.
53
54--           DROP VIEW public.flst_an_strasse;
55CREATE OR REPLACE VIEW public.flst_an_strasse
56AS
57  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
58  SELECT fm.gml_id AS fsgml,
59         sm.gml_id AS stgml,                 -- Filter: gml_id der Straße
60         'm' AS fall                         -- SÀtze unterschieden: Mit HsNr
61    FROM ax_flurstueck fm                    -- FlurstÃŒck Mit
62    JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT
63      ON lm.gml_id = ANY (fm.weistauf)
64    JOIN ax_lagebezeichnungkatalogeintrag sm
65      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
66   WHERE lm.endet IS NULL AND fm.endet IS NULL -- nichts Historisches
67 UNION
68  -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
69  SELECT fo.gml_id AS fsgml,
70         so.gml_id AS stgml,                 -- Filter: gml_id der Straße
71         'o' AS fall                         -- SÀtze unterschieden: Ohne HsNr
72    FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE
73    JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
74      ON lo.gml_id = ANY (fo.zeigtauf)
75    JOIN ax_lagebezeichnungkatalogeintrag so -- Straße OHNE
76      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
77   WHERE lo.endet IS NULL AND fo.endet IS NULL; -- nichts Historisches
78
79COMMENT ON VIEW public.flst_an_strasse
80 IS 'ALKIS-Beziehung von FlurstÃŒck zu Straßentabelle. UNION-Zusammenfassung der FÀlle MIT und OHNE Hausnummer.';
81
82-- Muss man noch dafÃŒr sorgen, dass FlurstÃŒck nicht doppelt vorkommt? z.B. mit DISTINCT
83-- Oder mÃŒssen ggf. mehrfache FS im Programm ÃŒbersprungen werden?
84
85
86-- Generelle Export-Struktur "FlurstÃŒck - Buchung - Grundbuch - Person"
87-- --------------------------------------------------------------------
88-- Wird benötigt im Auskunft-Modul "alkisexport.php":
89-- Je nach aufrufendem Modul wird der Filter (WHERE) an anderer Stelle gesetzt (gml_id von FS, GB oder Pers.)
90-- FÃŒr Filter nach "Straße" siehe die nachfolgende Sonderversion "exp_csv_str".
91
92-- Problem / Konflikt:
93-- Es kann nur eine lineare Struktur aus Spalten und Zeilen exportiert werden.
94-- Wenn nicht nur die Daten des Ausgangs-Objektes exportiert werden, sondern auch verbundene Tabellen in
95-- einer 1:N-Struktur, dann verdoppeln sich Zeileninhalte und es werden redundante Daten erzeugt.
96-- Diese Redundanzen mÃŒssen vom dem Programm gefiltert werden, das die Daten ÃŒber eine Schnittstelle einliest.
97-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÀgen.
98
99
100DROP VIEW IF EXISTS exp_csv;
101CREATE OR REPLACE VIEW exp_csv
102AS
103 SELECT
104  -- F l u r s t ÃŒ c k
105    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID
106    f.flurstueckskennzeichen             AS fs_kennz,
107    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln
108    f.flurnummer, f.zaehler, f.nenner,
109    f.amtlicheflaeche                    AS fs_flae,
110    g.bezeichnung                        AS gemarkung,
111  -- G r u n d b u c h
112    gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID
113    gb.bezirk                            AS gb_bezirk,
114    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
115    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name
116  -- B u c h u n g s s t e l l e  (GrundstÃŒck)
117    s.laufendenummer                     AS bu_lfd,      -- BVNR
118    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
119    s.buchungsart,                                       -- verschlÃŒsselt
120    wb.v                                 AS bu_art,      -- Buchungsart entschlÃŒsselt
121  -- N a m e n s N u m m e r  (Normalfall mit Person)
122    nn.laufendenummernachdin1421         AS nam_lfd,
123    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,     -- als Excel-Formel
124  -- R e c h t s g e m e i n s c h a f t  (Sonderfall von Namensnummer, ohne Person, ohne Nummer)
125    rg.artderrechtsgemeinschaft          AS nam_adr,
126    rg.v                                 AS nam_adrv,    -- Art der Rechtsgem. - Value zum Key
127    rg.beschriebderrechtsgemeinschaft    AS nam_bes,
128  -- P e r s o n
129    p.gml_id                             AS psgml,       -- möglicher Filter Personen-GML-ID
130    p.anrede,                                            -- Anrede key
131    wp.v                                 AS anrv,        -- Anrede Value zum Key
132    p.vorname,
133    p.namensbestandteil,
134    p.nachnameoderfirma,                                 -- Familienname
135    p.geburtsdatum,
136  -- A d r e s s e  der Person
137    a.postleitzahlpostzustellung         AS plz,
138    a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort
139    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr
140    a.bestimmungsland                    AS land
141  FROM ax_flurstueck    f               -- FlurstÃŒck
142  JOIN ax_gemarkung g                   -- entschlÃŒsseln
143    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
144  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
145    ON f.istgebucht = s.gml_id
146  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
147    ON gb.gml_id = s.istbestandteilvon
148  JOIN ax_buchungsblattbezirk z
149    ON gb.land=z.land AND gb.bezirk=z.bezirk
150  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
151    ON gb.gml_id = nn.istbestandteilvon
152  JOIN ax_person p                      -- NamNum >benennt> Person
153    ON p.gml_id = nn.benennt
154  LEFT JOIN ax_anschrift a
155    ON a.gml_id = ANY (p.hat)
156  -- E n t s c h l ÃŒ s s e l n:
157  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede"
158    ON cast(p.anrede AS character varying) = wp.k
159   AND wp.element = 'ax_person'
160   AND wp.bezeichnung = 'anrede'
161  LEFT JOIN alkis_wertearten wb         -- EntschlÃŒsseln "Buchungsart"
162    ON cast(s.buchungsart AS character varying) = wb.k
163 -- buchungsart = integer / .k  = char 4stellig
164   AND wb.element = 'ax_buchungsstelle'
165   AND wb.bezeichnung = 'buchungsart'
166  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
167  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
168  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person.
169  LEFT JOIN
170   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.v
171       FROM ax_namensnummer r
172       JOIN ax_buchungsblatt gr
173         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)
174      LEFT JOIN alkis_wertearten wr
175        ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft'
176      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
177   ON rg.gml_id = gb.gml_id  -- zum GB
178  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
179UNION
180 SELECT
181  -- F l u r s t ÃŒ c k
182    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID
183    f.flurstueckskennzeichen             AS fs_kennz,
184    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln
185    f.flurnummer, f.zaehler, f.nenner,
186    f.amtlicheflaeche                    AS fs_flae,
187    g.bezeichnung                        AS gemarkung,
188  -- G r u n d b u c h
189    gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID
190    gb.bezirk                            AS gb_bezirk,
191    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
192    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name
193  -- B u c h u n g s s t e l l e  (GrundstÃŒck)
194    s.laufendenummer                     AS bu_lfd,      -- BVNR
195    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
196    s.buchungsart,                                       -- verschlÃŒsselt
197    wb.v                                 AS bu_art,      -- Buchungsart entschlÃŒsselt
198  -- N a m e n s N u m m e r  (Normalfall mit Person)
199    nn.laufendenummernachdin1421         AS nam_lfd,
200    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,     -- als Excel-Formel
201  -- R e c h t s g e m e i n s c h a f t  (Sonderfall von Namensnummer, ohne Person, ohne Nummer)
202    rg.artderrechtsgemeinschaft          AS nam_adr,
203    rg.v                                 AS nam_adrv,    -- Art der Rechtsgem. - Value zum Key
204    rg.beschriebderrechtsgemeinschaft    AS nam_bes,
205  -- P e r s o n
206    p.gml_id                             AS psgml,       -- möglicher Filter Personen-GML-ID
207    p.anrede,                                            -- Anrede key
208    wp.v                                 AS anrv,        -- Anrede Value zum Key
209    p.vorname,
210    p.namensbestandteil,
211    p.nachnameoderfirma,                                 -- Familienname
212    p.geburtsdatum,
213   -- A d r e s s e  der Person
214    a.postleitzahlpostzustellung         AS plz,
215    a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort
216    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr
217    a.bestimmungsland                    AS land
218  FROM ax_flurstueck f                  -- FlurstÃŒck
219  JOIN ax_gemarkung g                   -- entschlÃŒsseln
220    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
221  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
222 -- Variante mit 2 Buchungs-Stellen (Recht An)
223  JOIN ax_buchungsstelle dien           -- dienende Buchung
224    ON f.istgebucht = dien.gml_id
225  JOIN ax_buchungsstelle s              -- herrschende Buchung
226    ON dien.gml_id = ANY (s.an)         -- hat Recht an
227  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
228    ON gb.gml_id = s.istbestandteilvon
229  JOIN ax_buchungsblattbezirk z
230    ON gb.land=z.land AND gb.bezirk=z.bezirk
231  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
232    ON gb.gml_id = nn.istbestandteilvon
233  JOIN ax_person p                      -- NamNum >benennt> Person
234    ON p.gml_id = nn.benennt
235  LEFT JOIN ax_anschrift a
236    ON a.gml_id = ANY (p.hat)
237  -- E n t s c h l ÃŒ s s e l n:
238  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede"
239    ON cast(p.anrede AS character varying)=wp.k AND wp.element='ax_person' AND wp.bezeichnung='anrede'
240  LEFT JOIN alkis_wertearten wb         -- EntschlÃŒsseln "Buchungsart"
241    ON cast(s.buchungsart AS character varying) = wb.k
242   AND wb.element = 'ax_buchungsstelle'
243   AND wb.bezeichnung = 'buchungsart'
244  LEFT JOIN
245   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.v
246       FROM ax_namensnummer r
247       JOIN ax_buchungsblatt gr
248         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)
249      LEFT JOIN alkis_wertearten wr
250        ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft'
251      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
252   ON rg.gml_id = gb.gml_id  -- zum GB
253  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
254    AND dien.endet IS NULL
255
256ORDER BY fs_kennz,   -- f.flurstueckskennzeichen,
257      -- fsgml,     
258         gb_bezirk,  -- gb.bezirk,
259         gb_blatt,   -- gb.buchungsblattnummermitbuchstabenerweiterung,
260         bu_lfd,     -- s.laufendenummer,
261         nam_lfd;    -- nn.laufendenummernachdin1421
262
263COMMENT ON VIEW exp_csv
264 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.';
265
266
267-- Eine Variante des View "exp_csv":
268-- Hier wird zusÀtzlich der Baustein "flst_an_strasse" verwendet.
269-- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden
270-- um nur die FlurstÃŒcke zu bekommen, die an einer Straße liegen.
271
272DROP VIEW IF EXISTS exp_csv_str;
273
274CREATE OR REPLACE VIEW exp_csv_str
275AS
276 SELECT
277    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag"
278                                                         -- UNTERSCHIED zu exp_csv
279    l.fall,                                              -- mit/ohne Hausnummer zur Lage
280  -- F l u r s t ÃŒ c k
281    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID
282    f.flurstueckskennzeichen             AS fs_kennz,
283    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln
284    f.flurnummer, f.zaehler, f.nenner,
285    f.amtlicheflaeche                    AS fs_flae,
286    g.bezeichnung                        AS gemarkung,
287  -- G r u n d b u c h
288  --gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID
289    gb.bezirk                            AS gb_bezirk,
290    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
291    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name
292  -- B u c h u n g s s t e l l e  (GrundstÃŒck)
293    s.laufendenummer                     AS bu_lfd,      -- BVNR
294    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
295    s.buchungsart,                                       -- verschlÃŒsselt
296    wb.v                                 AS bu_art,      -- Buchungsart entschlÃŒsselt
297  -- N a m e n s N u m m e r  (Normalfall mit Person)
298    nn.laufendenummernachdin1421         AS nam_lfd,
299    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,     -- als Excel-Formel
300  -- R e c h t s g e m e i n s c h a f t  (Sonderfall von Namensnummer, ohne Person, ohne Nummer)
301    rg.artderrechtsgemeinschaft          AS nam_adr,
302    rg.v                                 AS nam_adrv,    -- Art der Rechtsgem. - Value zum Key
303    rg.beschriebderrechtsgemeinschaft    AS nam_bes,
304  -- P e r s o n
305  --p.gml_id                             AS psgml,       -- möglicher Filter Personen-GML-ID
306    p.anrede,                                            -- Anrede key
307    wp.v                                 AS anrv,        -- Anrede Value zum Key
308    p.vorname,
309    p.namensbestandteil,
310    p.nachnameoderfirma,                                 -- Familienname
311    p.geburtsdatum,
312  -- A d r e s s e  der Person
313    a.postleitzahlpostzustellung         AS plz,
314    a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort
315    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr
316    a.bestimmungsland                    AS land
317  FROM ax_flurstueck    f               -- FlurstÃŒck
318  JOIN flst_an_strasse  l               -- Lage (hier zusÀtzlicher JOIN gegenÃŒber Version "exp_csv")
319    ON l.fsgml = f.gml_id               -- ToDo: ++ Durch UNION ersetzen! Oder durch Subquery? ++
320  JOIN ax_gemarkung g                   -- entschlÃŒsseln
321    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
322  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
323    ON f.istgebucht = s.gml_id
324  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
325    ON gb.gml_id = s.istbestandteilvon
326  JOIN ax_buchungsblattbezirk z
327    ON gb.land=z.land AND gb.bezirk=z.bezirk
328  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
329    ON gb.gml_id = nn.istbestandteilvon
330  JOIN ax_person p                      -- NamNum >benennt> Person
331    ON p.gml_id = nn.benennt
332  LEFT JOIN ax_anschrift a
333    ON a.gml_id = ANY (p.hat)
334  -- E n t s c h l ÃŒ s s e l n:
335  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede"
336    ON cast(p.anrede AS character varying) = wp.k
337   AND wp.element = 'ax_person'
338   AND wp.bezeichnung = 'anrede'
339  LEFT JOIN alkis_wertearten wb         -- EntschlÃŒsseln "Buchungsart"
340    ON cast(s.buchungsart AS character varying) = wb.k
341 -- buchungsart = integer / .k  = char 4stellig
342   AND wb.element = 'ax_buchungsstelle'
343   AND wb.bezeichnung = 'buchungsart'
344  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
345  -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
346  -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person.
347  LEFT JOIN
348   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.v
349       FROM ax_namensnummer r
350       JOIN ax_buchungsblatt gr
351         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)
352      LEFT JOIN alkis_wertearten wr
353        ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft'
354      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
355   ON rg.gml_id = gb.gml_id  -- zum GB
356  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL
357UNION
358 SELECT
359    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag"
360                                                         -- UNTERSCHIED zu exp_csv
361    l.fall,                                              -- mit/ohne Hausnummer zur Lage
362  -- F l u r s t ÃŒ c k
363    f.gml_id                             AS fsgml,       -- möglicher Filter FlurstÃŒcks-GML-ID
364    f.flurstueckskennzeichen             AS fs_kennz,
365    f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln
366    f.flurnummer, f.zaehler, f.nenner,
367    f.amtlicheflaeche                    AS fs_flae,
368    g.bezeichnung                        AS gemarkung,
369  -- G r u n d b u c h
370  --gb.gml_id                            AS gbgml,       -- möglicher Filter Grundbuch-GML-ID
371    gb.bezirk                            AS gb_bezirk,
372    gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
373    z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name
374  -- B u c h u n g s s t e l l e  (GrundstÃŒck)
375    s.laufendenummer                     AS bu_lfd,      -- BVNR
376    '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
377    s.buchungsart,                                       -- verschlÃŒsselt
378    wb.v                                 AS bu_art,      -- Buchungsart entschlÃŒsselt
379  -- N a m e n s N u m m e r  (Normalfall mit Person)
380    nn.laufendenummernachdin1421         AS nam_lfd,
381    '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,     -- als Excel-Formel
382  -- R e c h t s g e m e i n s c h a f t  (Sonderfall von Namensnummer, ohne Person, ohne Nummer)
383    rg.artderrechtsgemeinschaft          AS nam_adr,
384    rg.v                                 AS nam_adrv,    -- Art der Rechtsgem. - Value zum Key
385    rg.beschriebderrechtsgemeinschaft    AS nam_bes,
386  -- P e r s o n
387  --p.gml_id                             AS psgml,       -- möglicher Filter Personen-GML-ID
388    p.anrede,                                            -- Anrede key
389    wp.v                                 AS anrv,        -- Anrede Value zum Key
390    p.vorname,
391    p.namensbestandteil,
392    p.nachnameoderfirma,                                 -- Familienname
393    p.geburtsdatum,
394   -- A d r e s s e  der Person
395    a.postleitzahlpostzustellung         AS plz,
396    a.ort_post                           AS ort,         -- Anschreifenzeile 1: PLZ+Ort
397    a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: Straße+HsNr
398    a.bestimmungsland                    AS land
399  FROM ax_flurstueck f                  -- FlurstÃŒck
400  JOIN flst_an_strasse  l               -- Lage (hier zusÀtzlicher JOIN gegenÃŒber Version "exp_csv")
401    ON l.fsgml = f.gml_id
402  JOIN ax_gemarkung g                   -- entschlÃŒsseln
403    ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
404  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
405 -- Variante mit 2 Buchungs-Stellen (Recht An)
406  JOIN ax_buchungsstelle dien           -- dienende Buchung
407    ON f.istgebucht = dien.gml_id
408  JOIN ax_buchungsstelle s              -- herrschende Buchung
409    ON dien.gml_id = ANY (s.an)         -- hat Recht an
410  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
411    ON gb.gml_id = s.istbestandteilvon
412  JOIN ax_buchungsblattbezirk z
413    ON gb.land=z.land AND gb.bezirk=z.bezirk
414  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
415    ON gb.gml_id = nn.istbestandteilvon
416  JOIN ax_person p                      -- NamNum >benennt> Person
417    ON p.gml_id = nn.benennt
418  LEFT JOIN ax_anschrift a
419    ON a.gml_id = ANY (p.hat)
420  -- E n t s c h l ÃŒ s s e l n:
421  LEFT JOIN alkis_wertearten wp         -- EntschlÃŒsseln "Person - Anrede"
422    ON cast(p.anrede AS character varying)=wp.k AND wp.element='ax_person' AND wp.bezeichnung='anrede'
423  LEFT JOIN alkis_wertearten wb         -- EntschlÃŒsseln "Buchungsart"
424    ON cast(s.buchungsart AS character varying) = wb.k
425   AND wb.element = 'ax_buchungsstelle'
426   AND wb.bezeichnung = 'buchungsart'
427  LEFT JOIN
428   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.v
429       FROM ax_namensnummer r
430       JOIN ax_buchungsblatt gr
431         ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft)
432      LEFT JOIN alkis_wertearten wr
433        ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft'
434      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
435   ON rg.gml_id = gb.gml_id  -- zum GB
436  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL
437    AND dien.endet IS NULL
438
439ORDER BY fs_kennz,   -- f.flurstueckskennzeichen,
440         gb_bezirk,  -- gb.bezirk,
441         gb_blatt,   -- gb.buchungsblattnummermitbuchstabenerweiterung,
442         bu_lfd,     -- s.laufendenummer,
443         nam_lfd;    -- nn.laufendenummernachdin1421
444
445COMMENT ON VIEW exp_csv_str
446 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.';
447
448
449-- Berechtigung fuer Views
450-- ============================
451
452  GRANT SELECT ON TABLE public.flst_an_strasse  TO mb27;
453  GRANT SELECT ON TABLE public.exp_csv          TO mb27;
454  GRANT SELECT ON TABLE public.exp_csv_str      TO mb27;
455
456-- Ende --
Note: See TracBrowser for help on using the repository browser.