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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/http/nav/alkisnav_grd.php

    r306 r330  
    1010        2013-05-14  Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon. 
    1111        2013-12-12      Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÀttern möglich wird) 
     12        2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    1213*/ 
    1314$cntget = extract($_GET); 
     
    5253        global $debug; 
    5354        $linelimit=40; 
    54         $sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a "; 
    55         $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste 
    56         $sql.="ORDER BY a.bezeichnung LIMIT $1 ;"; 
     55 
     56        $sql ="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle "; 
     57        $sql.="WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL "; // AG aus Liste 
     58        $sql.="ORDER BY bezeichnung LIMIT $1 ;"; 
    5759        $res = pg_prepare("", $sql); 
    5860        $res = pg_execute("", array($linelimit)); 
    5961        if (!$res) { 
    6062                echo "\n<p class='err'>Fehler bei Amtsgerichte</p>"; 
    61                 #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     63                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
    6264                return 0; 
    6365        } 
     
    9395        $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g "; 
    9496        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle "; 
    95         $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 "; 
     97        $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL "; 
    9698        // Diese Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten: 
    97         $sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land and b.bezirk=g.bezirk LIMIT 1) IS NULL "; 
     99        $sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL "; 
    98100        $sql.="ORDER BY g.bezeichnung LIMIT $2 ;"; 
    99101        $v = array($agkey, $linelimit); 
     
    128130        #global $debug; 
    129131        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g "; 
    130         $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 LIMIT 1;"; 
     132        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 
    131133        $v=array($gbbez); 
    132134        $res=pg_prepare("", $sql); 
     
    159161        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g "; 
    160162        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle "; 
    161         $sql.="WHERE g.bezeichnung ILIKE $1 "; //       "AND a.stellenart=1000 " // Amtsgericht 
     163        $sql.="WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL "; // "AND a.stellenart=1000 " Amtsgericht 
    162164        $sql.="ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;"; 
    163165        if ( $gbkennz == "") { 
     
    219221        // Body 
    220222        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b "; 
    221         $sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 
     223        $sql.="WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 
    222224        $v=array($zgbbez, $linelimit); 
    223225        $res=pg_prepare("", $sql); 
     
    253255        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz; 
    254256        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";  
    255         $sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung "; 
     257        $sql.="WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 
    256258 
    257259        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123' 
     
    290292        } 
    291293        // Body 
    292         // 2013-12-12 Limit von ursprÃŒnglich 200 weit hoch gesetzt 
    293294        GB_Buchung_FS(1000, $zgbbez."-".$zblatt); // Blatt -> Buchung -> Flurstueck (Limitiert) 
    294         // ++ besser Limit wieder runter und "BlÀttern"-Funktion einfÃŒhren 
     295        // ++ besser Limit runter und "BlÀttern"-Funktion einfÃŒhren 
    295296        return;  
    296297} 
     
    300301        // Dazu die gml_id der Buchungsstelle ermitteln, um "function EinGrundstueck" benutzen zu können. 
    301302        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr; 
     303 
    302304        // Blatt ->  B u c h u n g s s t e l l e 
    303305        $sql ="SELECT s.gml_id FROM ax_buchungsstelle s "; 
    304         $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";  
    305         $sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu ";  
    306         $sql.="WHERE v.beziehungsart='istBestandteilVon' "; 
    307         $sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung "; 
     306        $sql.="JOIN ax_buchungsblatt b ON s.istbestandteilvon = b.gml_id ";  
     307        $sql.="WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 
     308 
    308309        if ($zblattz == "") { // Ohne Buchstabenerweiterung 
    309310                //Formate '123','000123 ','0000123' 
     
    351352                zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true); 
    352353        } 
    353 // SQL-Bausteine 
     354 
    354355// dienend $1 gml_id von 
    355 //         Buchungsstelle  <vs/an<  Buchungsstelle sh 
     356//         Buchungsstelle  <an<  Buchungsstelle sh 
    356357//         (dienend)                (herrschend) 
     358 
    357359// direkt  $1 gml_id von  
    358 //         Buchungsstelle                              <vs/istGebucht< FlurstÃŒck > Gemarkung 
     360//         Buchungsstelle                           <istGebucht< FlurstÃŒck >> Gemarkung 
     361 
    359362// Recht   $1 gml_id von  
    360 //         Buchungsstelle  >vs/an>  Buchungsstelle sd  <vf/istGebucht< FlurstÃŒck > Gemarkung 
    361 //         (herrschend)             (dienend)      sd  >vd/istBestandteilVon> bd > gd 
     363//         Buchungsstelle  >an>  Buchungsstelle sd  <istGebucht< FlurstÃŒck >> Gemarkung 
     364//         (herrschend)             (dienend)   sd  >istBestandteilVon> bd >> gd 
    362365 
    363366        // Body 
     
    373376        // Filter gleich 
    374377        switch ($gfilter) { // Filter Gemeinde 
    375                 case 1: // Einzelwert 
    376                         $sqlfitler="AND g.gemeinde=".$gemeinde." "; break; 
     378                case 1: // Einzel 
     379                        $sqlfitler="AND g.gemeinde='".$gemeinde."' "; break; 
    377380                case 2: // Liste 
    378                         $sqlfilter="AND g.gemeinde in (".$gemeinde.") "; break; 
    379         } 
    380  
    381         // Abfrage: Direkte Buchungen (FlurstÃŒcke) 
    382         $sql =$sqlanf."FROM alkis_beziehungen vs JOIN ax_flurstueck f ON vs.beziehung_von = f.gml_id "; 
    383         $sql.="JOIN pp_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
    384         $sql.="WHERE vs.beziehung_zu= $1 AND vs.beziehungsart='istGebucht' "; 
    385         $sql.=$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
     381                        $sqlfilter="AND g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
     382        } 
     383 
     384        // Direkte Buchungen (Flurst.) 
     385        $sql =$sqlanf."FROM ax_flurstueck f JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
     386        $sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    386387 
    387388        $v=array($buchunggml); 
     
    415416        } 
    416417 
    417         // Abfrage: Rechte an (dienende Buchungen und ihre FlurstÃŒcke) 
    418         $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, ";         // Stelle dienend 
     418        // Recht "an" (dienende Buchungen und ihre Flurst.) 
     419        $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, "; // Stelle dienend 
    419420        $sql.="bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, "; // Blatt dienend 
    420         $sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez ";    // AG und Bezirk dazu 
    421         $sql.="FROM alkis_beziehungen vs "; 
    422         $sql.="JOIN ax_buchungsstelle sd ON vs.beziehung_zu=sd.gml_id "; 
    423         $sql.="JOIN alkis_beziehungen vf ON vf.beziehung_zu=sd.gml_id "; // sd=Stelle dienend 
    424         $sql.="JOIN ax_flurstueck f ON vf.beziehung_von = f.gml_id "; 
     421        $sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez "; // AG und Bezirk dazu 
     422        $sql.="FROM ax_buchungsstelle sh "; // herrschend 
     423        $sql.="JOIN ax_buchungsstelle sd ON sd.gml_id = ANY(sh.an) "; // dienend 
     424        $sql.="JOIN ax_flurstueck f ON f.istgebucht = sd.gml_ID "; 
    425425        $sql.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
    426  
    427         // Blatt und Bezirk (dienend) 
    428         $sql.="JOIN alkis_beziehungen vd ON vd.beziehung_von=sd.gml_id "; 
    429         $sql.="JOIN ax_buchungsblatt bd ON vd.beziehung_zu=bd.gml_id "; // Blatt dienend 
     426        $sql.="JOIN ax_buchungsblatt bd ON sd.istbestandteilvon = bd.gml_id ";  // Blatt dienend 
    430427        $sql.="JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk "; // GB-Bez. dienend 
    431         $sql.="WHERE vs.beziehung_von = $1 AND vs.beziehungsart='an' AND vf.beziehungsart='istGebucht' AND vd.beziehungsart='istBestandteilVon' "; 
     428        $sql.="WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL "; 
    432429        $sql.=$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    433430 
     
    444441        $gwblatt=""; 
    445442        while($row = pg_fetch_array($res)) { 
    446                 $dienstelle=$row["stelle"];             // Stelle (AG) des dienenden GrundstÃŒcks 
     443                $dienstelle=$row["stelle"];     // Stelle (AG) des dienenden GrundstÃŒcks 
    447444                $dienbezgml=$row["dienbezgml"]; // Bezirks des dien. GS: gml, Nr. und Bezeichnung 
    448445                $diengbbez=$row["diengbbez"];   // Bezeichnung 
     
    450447                $dienbltgml=$row["dienbltgml"]; // dienendes Blatt, gml und Nr 
    451448                $dienblatt=$row["dienblatt"]; 
    452                 $diengml=$row["diengml"];               // gml_id des dienenden GrundstÃŒcks 
    453                 $dienlfd=$row["dienlfd"];               // BVNR (laufendNr) des dien. GS 
     449                $diengml=$row["diengml"];       // gml_id des dienenden GrundstÃŒcks 
     450                $dienlfd=$row["dienlfd"];       // BVNR (laufendNr) des dien. GS 
    454451                if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend 
    455452                        $gwblatt = $dienblatt; // Steuerg GW Blatt 
     
    471468        } 
    472469 
    473 // Teil 3 
    474 // ++  Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die  
    475 //     berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS)) 
     470// Teil 3 - noch nicht umgesetzt 
     471// ToDo: Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS) 
    476472 
    477473        // Foot 
     
    499495} else { 
    500496        $gfilter = 2; // Liste 
     497//      $gemeinde = "'".str_replace(",", "','", $gemeinde)."'"; // Jedes Element in '' 
    501498} 
    502499 
Note: See TracChangeset for help on using the changeset viewer.