Index: /trunk/import/norgis_alkis_pp/postcreate.d/6_views_exp_csv.sql
===================================================================
--- /trunk/import/norgis_alkis_pp/postcreate.d/6_views_exp_csv.sql	(revision 430)
+++ /trunk/import/norgis_alkis_pp/postcreate.d/6_views_exp_csv.sql	(revision 431)
@@ -18,9 +18,15 @@
 --  2017-12-06 Umbenennung von "x_classic2norgis.sql" nach "views_exp_csv.sql"
 --  2017-12-20 Beseitigung des Fehlers: Mehrere Adressen zur Person fuehren zu mehrfachen Zeilen (Wiederholung FlurstÃŒck und Flaeche ..)
---             Es wird je Persoon nur noch die "letzte" Adresse verwendet (subquery).
+--             Es wird je Person nur noch die "letzte" Adresse verwendet (subquery).
 --             Der View "exp_csv_str" ist jetzt direkt als 4fach-UNION (2x2) codiert statt mit eingebettetem gespeicherten 2fach-Union.
 --             Hauptvorteil: Keine undurchsichtigen AbhÃ€ngigkeiten. Ist auch etwas schneller.
 --  2017-12-20 Suche (Sortierung) 'letzte Adresse' nach "beginnt" statt nach "gml_id"
---  2018-11-09 Umstellung auf Full-Schema
+--  2018-11-06 Beginn der Umstellung auf Full-Schema (derzeit DEV, gdal 2.4)
+--  2019-04-03 Schema variabel machen:  :"alkis_schema", :"postgis_schema"
+--  2019-05-08 Schema auch in Subquery
+--  2020-02-20 Ersetzen des View "alkis_wertearten" (Simulation der alten zentralen Key-Value-Tabelle) durch einzelne SchlÃŒsseltabellen.
+--  2022-11-02 Auskommentierte JOIN ÃŒber "alkis_wertearten" entgÃŒltig entfernt, 
+--             Spalte "gsgml" (ax_buchungsstelle.gml_id) hinzugefÃŒgt. Ist Filter bei Aufruf von "alkisexport.php" aus "alkisgsnw.php".
+--             Bei "Recht an": Filter fÃŒr dienende BS, Werte aus herrschenden BS.
 
 -- ToDo:
@@ -37,7 +43,7 @@
 -- Der WMS "Flurstuecke Kommunal" (aus View "st_flurst[gkz][e|r]") wird langsam, wenn er in einer kreisweiten Datenbank ausgefÃŒhrt wird.
 -- Das Filter-Feld benÃ¶tigt einen Index:
-DROP INDEX if exists ax_person_nname;
+DROP INDEX if exists :"alkis_schema".ax_person_nname;
 CREATE INDEX ax_person_nname
-  ON ax_person USING btree (nachnameoderfirma COLLATE pg_catalog."default");
+  ON :"alkis_schema".ax_person USING btree (nachnameoderfirma COLLATE pg_catalog."default");
 
 
@@ -58,6 +64,6 @@
 -- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÃ€gen.
 
-DROP VIEW IF EXISTS exp_csv;
-CREATE OR REPLACE VIEW exp_csv
+DROP VIEW IF EXISTS :"alkis_schema".exp_csv;
+CREATE OR REPLACE VIEW :"alkis_schema".exp_csv
 AS
  SELECT -- Fall: einfache Buchung (ohne "Recht an")
@@ -75,4 +81,5 @@
     z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name
   -- B u c h u n g s s t e l l e  (GrundstÃŒck)
+    s.gml_id                             AS gsgml,       -- mÃ¶glicher Filter GrundstÃŒck-GML-ID
     s.laufendenummer                     AS bu_lfd,      -- BVNR
     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
@@ -99,24 +106,25 @@
     a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: StraÃe+HsNr
     a.bestimmungsland                    AS land
-   FROM ax_flurstueck    f               -- FlurstÃŒck
-  JOIN ax_gemarkung g                   -- entschlÃŒsseln
+  FROM :"alkis_schema".ax_flurstueck    f               -- FlurstÃŒck
+  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
+  JOIN :"alkis_schema".ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
     ON f.istgebucht = s.gml_id
-  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
     ON gb.gml_id = s.istbestandteilvon
-  JOIN ax_buchungsblattbezirk z 
+  JOIN :"alkis_schema".ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
     ON gb.gml_id = nn.istbestandteilvon
-  JOIN ax_person p                      -- NamNum >benennt> Person 
+  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person 
     ON p.gml_id = nn.benennt
-  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
-    ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
+  LEFT JOIN :"alkis_schema".ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
+    ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
   -- E n t s c h l ÃŒ s s e l n:
---LEFT JOIN alkis_wertearten wp ON cast(p.anrede AS character varying) = wp.k AND wp.element = 'ax_person' AND wp.bezeichnung = 'anrede'
-  LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert
---LEFT JOIN alkis_wertearten wb ON cast(s.buchungsart AS character varying) = wb.k AND wb.element = 'ax_buchungsstelle' AND wb.bezeichnung = 'buchungsart'
-  LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert
+  LEFT JOIN :"alkis_schema".ax_anrede_person wp         -- EntschlÃŒsseln "Person - Anrede"
+    ON p.anrede = wp.wert
+  LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart"
+    ON s.buchungsart = wb.wert  -- wb.beschreibung
+  
   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
@@ -124,9 +132,10 @@
   LEFT JOIN
    ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung
-       FROM ax_namensnummer r 
-       JOIN ax_buchungsblatt gr
+       FROM :"alkis_schema".ax_namensnummer r 
+       JOIN :"alkis_schema".ax_buchungsblatt gr
          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-    --LEFT JOIN alkis_wertearten wr ON cast(r.artderrechtsgemeinschaft AS character varying)=wr.k AND wr.element='ax_namensnummer' AND wr.bezeichnung='artderrechtsgemeinschaft' 
-      LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert
+      LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr
+        ON r.artderrechtsgemeinschaft = wr.wert
+
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -149,4 +158,5 @@
     z.bezeichnung                        AS beznam,      -- GB-Bezirks-Name
   -- B u c h u n g s s t e l l e  (GrundstÃŒck)
+    dien.gml_id                          AS gsgml,       -- 2022-11-02: mÃ¶glicher Filter GrundstÃŒck-GML-ID (dienende Buchung)
     s.laufendenummer                     AS bu_lfd,      -- BVNR
     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
@@ -173,32 +183,36 @@
     a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: StraÃe+HsNr
     a.bestimmungsland                    AS land
-  FROM ax_flurstueck f                  -- FlurstÃŒck
-  JOIN ax_gemarkung g                   -- entschlÃŒsseln
+  FROM :"alkis_schema".ax_flurstueck f                  -- FlurstÃŒck
+  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
   -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
  -- Variante mit 2 Buchungs-Stellen (Recht An)
-  JOIN ax_buchungsstelle dien           -- dienende Buchung
+  JOIN :"alkis_schema".ax_buchungsstelle dien           -- dienende Buchung
     ON f.istgebucht = dien.gml_id
-  JOIN ax_buchungsstelle s              -- herrschende Buchung
-    ON dien.gml_id = ANY (s.an)         -- hat Recht an
-  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+  JOIN :"alkis_schema".ax_buchungsstelle s              -- herrschende Buchung
+    ON dien.gml_id = ANY (s.an)                         -- hat Recht an
+  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
     ON gb.gml_id = s.istbestandteilvon
-  JOIN ax_buchungsblattbezirk z 
+  JOIN :"alkis_schema".ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
     ON gb.gml_id = nn.istbestandteilvon
-  JOIN ax_person p                      -- NamNum >benennt> Person 
+  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person 
     ON p.gml_id = nn.benennt
-  LEFT JOIN ax_anschrift a               -- nur die "letzte" Anschrift zur Person verwenden
-    ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
+  LEFT JOIN :"alkis_schema".ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
+    ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
   -- E n t s c h l ÃŒ s s e l n:
-  LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert
-  LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert
+  LEFT JOIN :"alkis_schema".ax_anrede_person wp         -- EntschlÃŒsseln "Person - Anrede"
+    ON p.anrede = wp.wert
+  LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart"
+    ON s.buchungsart = wb.wert
   LEFT JOIN
    ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung
-       FROM ax_namensnummer r 
-       JOIN ax_buchungsblatt gr
+       FROM :"alkis_schema".ax_namensnummer r 
+       JOIN :"alkis_schema".ax_buchungsblatt gr
          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-      LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert
+      LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr
+        ON r.artderrechtsgemeinschaft = wr.wert
+		
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -207,4 +221,5 @@
 
 ORDER BY fs_kennz,   -- f.flurstueckskennzeichen, 
+      -- fsgml,      
          gb_bezirk,  -- gb.bezirk, 
          gb_blatt,   -- gb.buchungsblattnummermitbuchstabenerweiterung,
@@ -212,5 +227,5 @@
          nam_lfd;    -- nn.laufendenummernachdin1421
 
-COMMENT ON VIEW exp_csv 
+COMMENT ON VIEW :"alkis_schema".exp_csv 
  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.';
 
@@ -221,7 +236,7 @@
 -- um nur die FlurstÃŒcke zu bekommen, die an einer StraÃe liegen.
 
-DROP VIEW IF EXISTS exp_csv_str;
-
-CREATE OR REPLACE VIEW exp_csv_str
+DROP VIEW IF EXISTS :"alkis_schema".exp_csv_str;
+
+CREATE OR REPLACE VIEW :"alkis_schema".exp_csv_str
 AS      -- Version mit 4fach-UNION (2x2 FÃ€lle) statt eingebauter View "flst_an_strasse"
  SELECT -- Fall 1: einfache Buchung (ohne Recht an)  // Lagebezeichnung MIT Hausnummer
@@ -265,27 +280,30 @@
     a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: StraÃe+HsNr
     a.bestimmungsland                    AS land
-  FROM ax_flurstueck    f               -- FlurstÃŒck
+  FROM :"alkis_schema".ax_flurstueck    f               -- FlurstÃŒck
   -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
-  JOIN ax_lagebezeichnungmithausnummer lm -- Lage MIT
+  JOIN :"alkis_schema".ax_lagebezeichnungmithausnummer lm -- Lage MIT
     ON lm.gml_id = ANY (f.weistauf)
-  JOIN ax_lagebezeichnungkatalogeintrag sm
+  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag sm
    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 
-   JOIN ax_gemarkung g                   -- entschlÃŒsseln
+   JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
+  JOIN :"alkis_schema".ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
     ON f.istgebucht = s.gml_id
-  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
     ON gb.gml_id = s.istbestandteilvon
-  JOIN ax_buchungsblattbezirk z 
+  JOIN :"alkis_schema".ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
     ON gb.gml_id = nn.istbestandteilvon
-  JOIN ax_person p                      -- NamNum >benennt> Person 
+  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person 
     ON p.gml_id = nn.benennt
-  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
-    ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
+  LEFT JOIN :"alkis_schema".ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
+    ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
   -- E n t s c h l ÃŒ s s e l n:
-  LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert
-  LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert
+  LEFT JOIN :"alkis_schema".ax_anrede_person wp         -- EntschlÃŒsseln "Person - Anrede"
+    ON p.anrede = wp.wert
+  LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart"
+    ON s.buchungsart = wb.wert
+   
   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
@@ -293,8 +311,10 @@
   LEFT JOIN
    ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung
-       FROM ax_namensnummer r 
-       JOIN ax_buchungsblatt gr
+       FROM :"alkis_schema".ax_namensnummer r 
+       JOIN :"alkis_schema".ax_buchungsblatt gr
          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-      LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert
+      LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr
+        ON r.artderrechtsgemeinschaft = wr.wert
+
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -343,37 +363,40 @@
     a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: StraÃe+HsNr
     a.bestimmungsland                    AS land
-  FROM ax_flurstueck f                  -- FlurstÃŒck
+  FROM :"alkis_schema".ax_flurstueck f                  -- FlurstÃŒck
   -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
-  JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT
+  JOIN :"alkis_schema".ax_lagebezeichnungmithausnummer lm  -- Lage MIT
     ON lm.gml_id = ANY (f.weistauf)
-  JOIN ax_lagebezeichnungkatalogeintrag sm
+  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag sm
     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 
-  JOIN ax_gemarkung g                   -- entschlÃŒsseln
+  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
   -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
  -- Variante mit 2 Buchungs-Stellen (Recht An)
-  JOIN ax_buchungsstelle dien           -- dienende Buchung
+  JOIN :"alkis_schema".ax_buchungsstelle dien           -- dienende Buchung
     ON f.istgebucht = dien.gml_id
-  JOIN ax_buchungsstelle s              -- herrschende Buchung
+  JOIN :"alkis_schema".ax_buchungsstelle s              -- herrschende Buchung
     ON dien.gml_id = ANY (s.an)         -- hat Recht an
-  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
     ON gb.gml_id = s.istbestandteilvon
-  JOIN ax_buchungsblattbezirk z 
+  JOIN :"alkis_schema".ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
     ON gb.gml_id = nn.istbestandteilvon
-  JOIN ax_person p                      -- NamNum >benennt> Person 
+  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person 
     ON p.gml_id = nn.benennt
-  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
-    ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
+  LEFT JOIN :"alkis_schema".ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
+    ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
   -- E n t s c h l ÃŒ s s e l n:
-  LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert
-  LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert
+  LEFT JOIN :"alkis_schema".ax_anrede_person wp         -- EntschlÃŒsseln "Person - Anrede"
+    ON p.anrede = wp.wert
+  LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart"
+    ON s.buchungsart = wb.wert
   LEFT JOIN
    ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung
-       FROM ax_namensnummer r 
-       JOIN ax_buchungsblatt gr
+       FROM :"alkis_schema".ax_namensnummer r 
+       JOIN :"alkis_schema".ax_buchungsblatt gr
          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-      LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert
+      LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr
+        ON r.artderrechtsgemeinschaft = wr.wert
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -423,27 +446,30 @@
     a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: StraÃe+HsNr
     a.bestimmungsland                    AS land
-  FROM ax_flurstueck    f               -- FlurstÃŒck
+  FROM :"alkis_schema".ax_flurstueck    f               -- FlurstÃŒck
 -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
-  JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
+  JOIN :"alkis_schema".ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
     ON lo.gml_id = ANY (f.zeigtauf)
-  JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
+  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
     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
-  JOIN ax_gemarkung g                   -- entschlÃŒsseln
+  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-  JOIN ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
+  JOIN :"alkis_schema".ax_buchungsstelle s              -- FS >istGebucht> Buchungstelle
     ON f.istgebucht = s.gml_id
-  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
     ON gb.gml_id = s.istbestandteilvon
-  JOIN ax_buchungsblattbezirk z 
+  JOIN :"alkis_schema".ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
     ON gb.gml_id = nn.istbestandteilvon
-  JOIN ax_person p                      -- NamNum >benennt> Person 
+  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person 
     ON p.gml_id = nn.benennt
-  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
-    ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
+  LEFT JOIN :"alkis_schema".ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
+    ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
   -- E n t s c h l ÃŒ s s e l n:
-  LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert
-  LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert
+  LEFT JOIN :"alkis_schema".ax_anrede_person wp         -- EntschlÃŒsseln "Person - Anrede"
+    ON p.anrede = wp.wert
+  LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart"
+    ON s.buchungsart = wb.wert
+
   -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
@@ -451,8 +477,10 @@
   LEFT JOIN
    ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung
-       FROM ax_namensnummer r 
-       JOIN ax_buchungsblatt gr
+       FROM :"alkis_schema".ax_namensnummer r 
+       JOIN :"alkis_schema".ax_buchungsblatt gr
          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-      LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert
+      LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr
+        ON r.artderrechtsgemeinschaft = wr.wert
+		
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -501,37 +529,41 @@
     a.strasse,  a.hausnummer,                            -- Anschriftenzeile 2: StraÃe+HsNr
     a.bestimmungsland                    AS land
-  FROM ax_flurstueck f                  -- FlurstÃŒck
+  FROM :"alkis_schema".ax_flurstueck f                  -- FlurstÃŒck
 -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
-  JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
+  JOIN :"alkis_schema".ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
     ON lo.gml_id = ANY (f.zeigtauf)
-  JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
+  JOIN :"alkis_schema".ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
     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
-  JOIN ax_gemarkung g                   -- entschlÃŒsseln
+  JOIN :"alkis_schema".ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
   -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
  -- Variante mit 2 Buchungs-Stellen (Recht An)
-  JOIN ax_buchungsstelle dien           -- dienende Buchung
+  JOIN :"alkis_schema".ax_buchungsstelle dien           -- dienende Buchung
     ON f.istgebucht = dien.gml_id
-  JOIN ax_buchungsstelle s              -- herrschende Buchung
+  JOIN :"alkis_schema".ax_buchungsstelle s              -- herrschende Buchung
     ON dien.gml_id = ANY (s.an)         -- hat Recht an
-  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+  JOIN :"alkis_schema".ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
     ON gb.gml_id = s.istbestandteilvon
-  JOIN ax_buchungsblattbezirk z 
+  JOIN :"alkis_schema".ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+  JOIN :"alkis_schema".ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
     ON gb.gml_id = nn.istbestandteilvon
-  JOIN ax_person p                      -- NamNum >benennt> Person 
+  JOIN :"alkis_schema".ax_person p                      -- NamNum >benennt> Person 
     ON p.gml_id = nn.benennt
-  LEFT JOIN ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
-    ON a.gml_id = (SELECT gml_id FROM ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
+  LEFT JOIN :"alkis_schema".ax_anschrift a              -- nur die "letzte" Anschrift zur Person verwenden
+    ON a.gml_id = (SELECT gml_id FROM :"alkis_schema".ax_anschrift an WHERE an.gml_id = ANY(p.hat) AND an.endet IS NULL ORDER BY an.beginnt DESC LIMIT 1)
   -- E n t s c h l ÃŒ s s e l n:
-  LEFT JOIN ax_anrede_person wp ON p.anrede = wp.wert
-  LEFT JOIN ax_buchungsart_buchungsstelle wb ON s.buchungsart = wb.wert
+  LEFT JOIN :"alkis_schema".ax_anrede_person wp         -- EntschlÃŒsseln "Person - Anrede"
+    ON p.anrede = wp.wert
+  LEFT JOIN :"alkis_schema".ax_buchungsart_buchungsstelle wb -- EntschlÃŒsseln "Buchungsart"
+    ON s.buchungsart = wb.wert
   LEFT JOIN
    ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft, wr.beschreibung
-       FROM ax_namensnummer r 
-       JOIN ax_buchungsblatt gr
+       FROM :"alkis_schema".ax_namensnummer r 
+       JOIN :"alkis_schema".ax_buchungsblatt gr
          ON r.istbestandteilvon = gr.gml_id -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
-      LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wr ON r.artderrechtsgemeinschaft = wr.wert
+      LEFT JOIN :"alkis_schema".ax_artderrechtsgemeinschaft_namensnummer wr
+        ON r.artderrechtsgemeinschaft = wr.wert
+
       WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
    ON rg.gml_id = gb.gml_id  -- zum GB
@@ -545,10 +577,16 @@
          nam_lfd;    -- nn.laufendenummernachdin1421
 
-COMMENT ON VIEW exp_csv_str 
+COMMENT ON VIEW :"alkis_schema".exp_csv_str 
  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.';
 
 -- Berechtigung
-  GRANT SELECT ON TABLE public.exp_csv          TO mb27;
-  GRANT SELECT ON TABLE public.exp_csv_str      TO mb27;
-
+  GRANT SELECT ON TABLE :"alkis_schema".exp_csv          TO mb27;
+  GRANT SELECT ON TABLE :"alkis_schema".exp_csv_str      TO mb27;
+
+  GRANT SELECT ON TABLE :"alkis_schema".exp_csv          TO mb28;
+  GRANT SELECT ON TABLE :"alkis_schema".exp_csv_str      TO mb28;
+
+/* Alle Views eintragen auf DB-Server:
+  for gkz in 070 120 130 140 150 200 210 240 250 260 270 290 300 320 330 340 418 430 ; do  echo $gkz ; psql -d alkis0$gkz -v alkis_schema=public -f /data/alkis-import/postcreate.d/6_views_exp_csv.sql ; done  
+*/
 -- Ende --
Index: /trunk/info/info/alkisn/alkisexport.php
===================================================================
--- /trunk/info/info/alkisn/alkisexport.php	(revision 430)
+++ /trunk/info/info/alkisn/alkisexport.php	(revision 431)
@@ -33,10 +33,9 @@
 	2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden
 
-	ToDo:
+	ToDo:.
 	- In den gespeicherten Views "exp_csv" und "exp_csv_str" den Fall Kataster-Amts-Mix berÃŒcksichtigen.
 	- Abruf FlurstÃŒck sollte auch mit "fskennz" (ggg-ff-zzz/nn) statt "gml-id" mÃ¶glich sein
 	- In Dateiname den StraÃennamen statt der gmlid verwenden? (Umlaute?)
 	- in alkislage.php fÃŒr den Typ "ohne Haunummer" den Export mit strasse und haus=o verlinken
-ToDo: FÃŒr PHP 8.1: connection angeben bei pg_prpare und pg_execute
 */
 
@@ -197,6 +196,6 @@
 		break;
 
-	case 'buchung': // ax_buchungsstelle.gml_id
-		$sql="SELECT * FROM exp_csv WHERE gsgml = $1 ";
+	case 'buchung': // ax_buchungsstelle.gml_id (bei "Recht an" die herrschende Buchung)
+		$sql="SELECT * FROM exp_csv WHERE gsgml = $1 "; // 2022-11-02: gsgml im View eingefÃŒgt
 		break;
 
Index: /trunk/info/info/alkisn/alkisbauwerk.php
===================================================================
--- /trunk/info/info/alkisn/alkisbauwerk.php	(revision 430)
+++ /trunk/info/info/alkisn/alkisbauwerk.php	(revision 431)
@@ -28,4 +28,5 @@
 	2022-02-23 Neue Bauwerks-Typen 10-12
 	2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden
+	2022-11-02 Fehlerkorrektur: break in switch
 
 ToDo:
@@ -585,4 +586,5 @@
 				tab_zeile('Lage zur Erdoberfl&auml;che', $rowk["lagezurerdoberflaeche"], $bes, '', $dok);
 				tab_zeile('Speicherinhalt', $rowk["speicherinhalt"], htmlentities($rowk["spbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["spdok"], ENT_QUOTES, "UTF-8"));
+			break;
 			case $btyp_hist: // 10
 				tab_zeile('Arch&auml;ologischer Typ', $rowk["archaeologischertyp"], $bes, '', $dok);
Index: /trunk/info/info/alkisn/alkisgebaeudenw.php
===================================================================
--- /trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 430)
+++ /trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 431)
@@ -19,4 +19,5 @@
 	2022-02-17 Neue Bauwerks-Typen
 	2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden
+	2022-11-02 Fehlerkorrektur $gzus
 */
 
@@ -246,5 +247,5 @@
 		echo "</td>\n\t<td>";
 		if ($gzus != "") {
-			echo DsKy(gzus, 'Zustand-*').$gzustand;
+			echo DsKy($gzus, 'Zustand-*').$gzustand;
 		}
 		echo "</td>";
