Index: /trunk/var/www/info/alkis/alkisgebaeudenw.php
===================================================================
--- /trunk/var/www/info/alkis/alkisgebaeudenw.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisgebaeudenw.php	(revision 78)
@@ -12,4 +12,6 @@
 					https://trac.wheregroup.com/PostNAS/ticket/6
 	26.01.2011  Space in leere td
+
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 	ToDo: lfd.Nr. der NebengebÃ€ude alternativ zur Hausnummer anzeigen.
 		Dazu aber Join auf ax_lagebezeichnungmitpseudonummer notwendig.
@@ -62,5 +64,5 @@
 $sqlf.="g.gemarkungsnummer, g.bezeichnung ";
 $sqlf.="FROM ax_flurstueck f ";
-$sqlf.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+$sqlf.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 $sqlf.="WHERE f.gml_id= $1;";
 
Index: /trunk/var/www/info/alkis/alkislage.php
===================================================================
--- /trunk/var/www/info/alkis/alkislage.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkislage.php	(revision 78)
@@ -10,4 +10,5 @@
 	14.12.2010  Pfad zur Conf
 	17.12.2010  Astrid Emde: Prepared Statements (pg_query -> pg_prepare + pg_execute)
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 */
 ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
@@ -86,9 +87,8 @@
 
 // Gemeinde entschluesseln
-$sql.="LEFT JOIN  ax_gemeinde g ";
-$sql.="ON l.kreis=g.kreis AND l.gemeinde=g.gemeinde ";
+$sql.="LEFT JOIN  ax_gemeinde g ON l.kreis=g.kreis AND l.gemeinde=g.gemeinde ";
 
 // Strasse entschluesseln
-$sql.="LEFT JOIN  ax_lagebezeichnungkatalogeintrag s ";
+$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ";
 // Besonderheit: unterschiedliche Feldformate und Fuellungen!!!
 
@@ -107,5 +107,4 @@
 	break;
 }
-
 $sql.="WHERE l.gml_id= $1;";
 
@@ -244,7 +243,7 @@
 	$sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
 	$sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
-	$sql.="FROM ax_gemarkung g ";
-	$sql.="JOIN ax_flurstueck f ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+	$sql.="FROM ax_flurstueck f ";
 	$sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von "; 
+	$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 	$sql.="WHERE v.beziehung_zu= $1 "; // id Lage
 	$sql.="AND v.beziehungsart= $2 ";
Index: /trunk/var/www/info/alkis/alkisfsnw.php
===================================================================
--- /trunk/var/www/info/alkis/alkisfsnw.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisfsnw.php	(revision 78)
@@ -14,4 +14,5 @@
 	05.01.2011  Korrektur der Fallunterscheidung "Funktion", auch "Vegetationsmerkmal", Title auf "Zustand".
 	26.01.2011  Space in leere td
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 	ToDo:
 	- EntschlÃŒsseln "Bahnkategorie" bei Behnverkehr, "OberflÃ€chenmaterial" bei Unland
@@ -68,5 +69,5 @@
 $sql.="g.gemarkungsnummer, g.bezeichnung ";
 $sql.="FROM ax_flurstueck f ";
-$sql.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+$sql.="LEFT JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 $sql.="WHERE f.gml_id= $1";
 
@@ -86,6 +87,8 @@
 	if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
 	$flae=number_format($row["amtlicheflaeche"],0,",",".") . " m&#178;";
-} else {echo "Fehler! Kein Treffer fuer gml_id=".$gmlid;}
-
+} else {
+	echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
+	//echo "<p class='err'>SQL=".$sql."</p>";
+}
 // Balken
 if ($eig=="j") {
@@ -183,10 +186,10 @@
 //                  <gehoertZu<
 $sql ="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung ";
-$sql.="FROM  alkis_beziehungen v ";
-$sql.="JOIN  ax_lagebezeichnungmithausnummer  l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
-$sql.="JOIN  ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
+$sql.="FROM alkis_beziehungen v ";
+$sql.="JOIN ax_lagebezeichnungmithausnummer  l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
+$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
 $sql.="AND to_char(l.lage, 'FM00000') = lpad(s.lage,5,'0') ";
 $sql.="WHERE v.beziehung_von= $1 "; // id FS";
-$sql.="AND   v.beziehungsart='weistAuf' ";
+$sql.="AND v.beziehungsart='weistAuf' ";
 $sql.="ORDER BY l.gemeinde, l.lage, l.hausnummer;";
 
@@ -400,4 +403,5 @@
 					$ico = "Abschnitt.ico";	break;
 			}
+			// Icon ist auch im Druck sichtbar, class='noprint' ?		
 			echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>";
 		echo "</td>";
@@ -452,11 +456,9 @@
 $sql.="s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.bezeichner AS bart ";
 //  s.beschreibungdesumfangsderbuchung as umf,  ?
-$sql.="FROM  alkis_beziehungen  v "; // Bez Flurst.- Stelle.
-$sql.="JOIN  ax_buchungsstelle  s ON v.beziehung_zu=s.gml_id ";
-
+$sql.="FROM alkis_beziehungen v "; // Bez Flurst.- Stelle.
+$sql.="JOIN ax_buchungsstelle s ON v.beziehung_zu=s.gml_id ";
 $sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
-
 $sql.="WHERE v.beziehung_von= $1 "; // id FS
-$sql.="AND   v.beziehungsart= $2 ";
+$sql.="AND v.beziehungsart= $2 ";
 $sql.="ORDER BY s.laufendenummer;";
 
@@ -469,5 +471,5 @@
 $bs=0; // Z.Buchungsstelle
 while($rows = pg_fetch_array($ress)) {
-	$gmls=$rows["gml_id"];
+	$gmls=$rows["gml_id"]; // gml b-Stelle
 	$lfd=$rows["lfd"]; // BVNR
 
@@ -475,9 +477,9 @@
 	$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
 	$sql.="z.bezeichnung ";  // stelle -> amtsgericht
-	$sql.="FROM  alkis_beziehungen      v "; // Bez. Stelle - Blatt
-	$sql.="JOIN  ax_buchungsblatt       b ON v.beziehung_zu=b.gml_id ";
-	$sql.="JOIN  ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
+	$sql.="FROM alkis_beziehungen v "; // Bez. Stelle - Blatt
+	$sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
+	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
 	$sql.="WHERE v.beziehung_von= $1 "; // id Buchungsstelle
-	$sql.="AND   v.beziehungsart= $2 ";
+	$sql.="AND v.beziehungsart= $2 ";
 	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
 
@@ -486,5 +488,5 @@
 	$resg = pg_execute("", $v);
 	if (!$resg) {
-		echo "\n<p class='err'>Keine Buchungsblatt.<br>\nSQL= ".$sql."</p>\n";
+		echo "\n<p class='err'>Kein Buchungsblatt.<br>\nSQL= ".$sql."</p>\n";
 	}
 	$bl=0; // Z.Blatt
@@ -585,5 +587,6 @@
 	}
 	if ($bl == 0) {
-		echo "\n<p class='err'>Kein Buchungsblatt gefunden.</p>";
+		echo "\n<p class='err'>Kein Buchungsblatt gefunden<br>\nSQL= ".$sql."</p>";
+		echo "\n<p class='err'>Parameter: gml_id= ".$gmls.", Beziehung='istBestandteilVon'</p>";
 		linkgml($gkz, $gmls, "Buchungstelle");
 	}
@@ -595,13 +598,13 @@
 	$sql.="b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, ";
 	$sql.="z.bezeichnung, a.bezeichner AS bart ";  // stelle -> amtsgericht
-	$sql.="FROM  alkis_beziehungen an "; // Bez. Stelle - Stelle
-	$sql.="JOIN  ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
-	$sql.="JOIN  alkis_beziehungen v ON s.gml_id = v.beziehung_von "; // Bez. Stelle - Blatt
-	$sql.="JOIN  ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
-	$sql.="JOIN  ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
-	$sql.="JOIN  ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
+	$sql.="FROM alkis_beziehungen an "; // Bez. Stelle - Stelle
+	$sql.="JOIN ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
+	$sql.="JOIN alkis_beziehungen v ON s.gml_id = v.beziehung_von "; // Bez. Stelle - Blatt
+	$sql.="JOIN ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
+	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
+	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
 	$sql.="WHERE an.beziehung_zu = $1 "; // id herrschende Buchungsstelle
-	$sql.="AND   an.beziehungsart = 'an' ";
-	$sql.="AND   v.beziehungsart = 'istBestandteilVon' ";
+	$sql.="AND an.beziehungsart = 'an' ";
+	$sql.="AND v.beziehungsart = 'istBestandteilVon' ";
 	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
 
Index: /trunk/var/www/info/alkis/alkisfkt.php
===================================================================
--- /trunk/var/www/info/alkis/alkisfkt.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisfkt.php	(revision 78)
@@ -9,4 +9,5 @@
 	09.11.2010  Functions, die nur einmal aufgerufen wurden, sequentiell in FS-Nachw. integriert
 	17.12.2010  Astrid Emde: Prepared Statements (pg_query -> pg_prepare + pg_execute)
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 */
 
@@ -86,5 +87,4 @@
 	echo "append=".$append."<br>";
 	echo "showkey=".$showkey;
-
 	echo "</p>"; */
 
@@ -121,9 +121,9 @@
 	$sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
 	$sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
-	$sql.="FROM ax_gemarkung g ";
-	$sql.="JOIN ax_flurstueck f ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+	$sql.="FROM ax_flurstueck f ";
 	$sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von "; 
+	$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 	$sql.="WHERE v.beziehung_zu= $1 "; // id buchungsstelle
-	$sql.="AND   v.beziehungsart='istGebucht' ";
+	$sql.="AND v.beziehungsart='istGebucht' ";
 	$sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
@@ -216,8 +216,8 @@
 	$sql="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, ";
 	$sql.="n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass ";
-	$sql.="FROM  ax_namensnummer n ";
-	$sql.="JOIN  alkis_beziehungen b ON b.beziehung_von=n.gml_id ";
+	$sql.="FROM ax_namensnummer n ";
+	$sql.="JOIN alkis_beziehungen b ON b.beziehung_von=n.gml_id ";
 	$sql.="WHERE b.beziehung_zu= $1 "; // id blatt
-	$sql.="AND   b.beziehungsart='istBestandteilVon' ";
+	$sql.="AND b.beziehungsart='istBestandteilVon' ";
 	$sql.="ORDER BY laufendenummernachdin1421;";
 
@@ -234,4 +234,5 @@
 	//echo "\n\n<!-- vor Schleife 1 Namensnummer -->";
 	while($rown = pg_fetch_array($resn)) {
+		$gmlnn=$rown["gml_id"];
 		echo "\n<tr>";
 			echo "\n\t<td class='nanu' title='Namens-Nummer'>\n\t\t<p>"; // Sp. 1
@@ -270,13 +271,12 @@
 		// Schleife 2: P e r s o n  
 		// Beziehung: ax_person  <benennt<  ax_namensnummer
-		$sql="SELECT p.gml_id, p.nachnameoderfirma, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad ";
-		$sql.="FROM  ax_person p ";
-		$sql.="JOIN  alkis_beziehungen v ON v.beziehung_zu=p.gml_id ";
-		$sql.="WHERE v.beziehung_von= $1 "; // id num
-		$sql.="AND   v.beziehungsart='benennt';";
-
-		$v = array($rown["gml_id"]);
+		$sql ="SELECT p.gml_id, p.nachnameoderfirma, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad ";
+		$sql.="FROM ax_person p JOIN alkis_beziehungen v ON v.beziehung_zu=p.gml_id ";
+		$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='benennt';";
+
+		$v = array($gmlnn);
 		$rese = pg_prepare("", $sql);
 		$rese = pg_execute("", $v);
+		// +++ kein Ergebnis bei leeren Schluesseltabellen !?
 
 		if (!$rese) {echo "\n\t<p class='err'>Fehler bei Eigentuemer<br>SQL= ".$sql."<br></p>\n";}
@@ -316,6 +316,5 @@
 				$sql.="FROM ax_anschrift a ";
 				$sql.="JOIN alkis_beziehungen b ON a.gml_id=b.beziehung_zu ";
-				$sql.="WHERE b.beziehung_von= $1 ";
-				$sql.="AND b.beziehungsart='hat';"; // ORDER?
+				$sql.="WHERE b.beziehung_von= $1 AND b.beziehungsart='hat';"; // ORDER?
 
 				$v = array($rowe["gml_id"]);
Index: /trunk/var/www/info/alkis/alkisinlayausk.php
===================================================================
--- /trunk/var/www/info/alkis/alkisinlayausk.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisinlayausk.php	(revision 78)
@@ -18,4 +18,5 @@
 	25.01.2011  F. JÃ€ger: Adressen (Lage mit HsNr) zum FS anzeigen	
 					https://trac.wheregroup.com/PostNAS/ticket/6
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 
 	ToDo:  Link im neuen Fenster erzwingen (Javascript?), statt _blank = tab
@@ -55,5 +56,5 @@
 $sql.=" g.gemarkungsnummer, g.bezeichnung ";
 $sql.="FROM ax_flurstueck f ";
-$sql.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+$sql.="LEFT JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 $sql.="WHERE f.gml_id= $1;";
 // Weiter joinen: g.stelle -> ax_dienststelle "Katasteramt"
@@ -108,10 +109,10 @@
 // Analog zu alkisfsnachw.php, Kommentare siehe dort
 $sql ="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung ";
-$sql.="FROM  alkis_beziehungen v ";
-$sql.="JOIN  ax_lagebezeichnungmithausnummer  l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
-$sql.="JOIN  ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
+$sql.="FROM alkis_beziehungen v ";
+$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
+$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
 $sql.="AND to_char(l.lage, 'FM00000') = lpad(s.lage,5,'0') ";
 $sql.="WHERE v.beziehung_von= $1 "; // id FS";
-$sql.="AND   v.beziehungsart='weistAuf' ";
+$sql.="AND v.beziehungsart='weistAuf' ";
 $sql.="ORDER BY l.gemeinde, l.lage, l.hausnummer;";
 $v = array($gmlid);
@@ -142,15 +143,13 @@
 $sql.="s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, ";
 $sql.="z.bezeichnung, a.bezeichner AS bart ";  // stelle -> amtsgericht
-$sql.="FROM  alkis_beziehungen    bfs "; // Bez Flurst.- Stelle.
-$sql.="JOIN  ax_buchungsstelle      s ON bfs.beziehung_zu=s.gml_id ";
-$sql.="JOIN  alkis_beziehungen    bsb ON s.gml_id=bsb.beziehung_von "; // Bez. Stelle - Blatt
-$sql.="JOIN  ax_buchungsblatt       b ON bsb.beziehung_zu=b.gml_id ";
-$sql.="JOIN  ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
-
+$sql.="FROM alkis_beziehungen bfs "; // Bez Flurst.- Stelle.
+$sql.="JOIN ax_buchungsstelle s ON bfs.beziehung_zu=s.gml_id ";
+$sql.="JOIN alkis_beziehungen bsb ON s.gml_id=bsb.beziehung_von "; // Bez. Stelle - Blatt
+$sql.="JOIN ax_buchungsblatt b ON bsb.beziehung_zu=b.gml_id ";
+$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
 $sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
-
 $sql.="WHERE bfs.beziehung_von= $1 ";
-$sql.="AND   bfs.beziehungsart='istGebucht' ";
-$sql.="AND   bsb.beziehungsart='istBestandteilVon' ";
+$sql.="AND bfs.beziehungsart='istGebucht' ";
+$sql.="AND bsb.beziehungsart='istBestandteilVon' ";
 $sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;";
 
Index: /trunk/var/www/info/alkis/alkisbestnw.php
===================================================================
--- /trunk/var/www/info/alkis/alkisbestnw.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisbestnw.php	(revision 78)
@@ -11,4 +11,5 @@
 	17.12.2010  Astrid Emde: Prepared Statements (pg_query -> pg_prepare + pg_execute)
 	26.01.2011  Space in leere td
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 	ToDo:
 	Zahler fuer Anzahl GB und FS in der Liste (ausgeben wenn > 10)
@@ -64,9 +65,9 @@
 $sql.="b.gml_id, b.bezirk, b.bezeichnung AS beznam, "; // Bezirk
 $sql.="a.gml_id, a.land, a.bezeichnung, a.stelle, a.stellenart "; // Amtsgericht
-$sql.="FROM  ax_buchungsblatt  g ";
-$sql.="JOIN  ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ";  // BBZ
-$sql.="JOIN  ax_dienststelle a ON b.\"gehoertzu|ax_dienststelle_schluessel|land\"=a.land AND b.stelle=a.stelle ";
+$sql.="FROM ax_buchungsblatt g ";
+$sql.="LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ";  // BBZ
+$sql.="LEFT JOIN ax_dienststelle a ON b.\"gehoertzu|ax_dienststelle_schluessel|land\"=a.land AND b.stelle=a.stelle ";
 $sql.="WHERE g.gml_id= $1 ";
-$sql.="AND   a.stellenart=1000;"; // Amtsgericht
+$sql.="AND a.stellenart=1000;"; // Amtsgericht
 
 $v = array($gmlid);
@@ -224,9 +225,9 @@
 			// dienendes Grundbuch
 			$sql ="SELECT b.gml_id, b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, z.bezeichnung AS beznam ";
-			$sql.="FROM  ax_buchungsblatt  b ";
-			$sql.="JOIN  alkis_beziehungen v ON b.gml_id=v.beziehung_zu ";
-			$sql.="JOIN  ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ";
+			$sql.="FROM ax_buchungsblatt  b ";
+			$sql.="JOIN alkis_beziehungen v ON b.gml_id=v.beziehung_zu ";
+			$sql.="LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ";
 			$sql.="WHERE v.beziehung_von='".$gml_bsan."' ";
-			$sql.="AND   v.beziehungsart='istBestandteilVon' ";
+			$sql.="AND v.beziehungsart='istBestandteilVon' ";
 			$sql.="ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
 
@@ -396,16 +397,13 @@
 	$sql.=" ag.bezeichnung, ag.stelle, ag.stellenart "; // Amtsgericht
 
-	$sql.="FROM  alkis_beziehungen  vf ";											// Verbindung fiktiv
-	$sql.="JOIN  ax_buchungsstelle  sf  ON sf.gml_id = vf.beziehung_von ";	// Stelle fiktiv
-	$sql.="JOIN  alkis_beziehungen  vs  ON sf.gml_id = vs.beziehung_zu ";	// Verbindung Stellen
-	$sql.="JOIN  ax_buchungsstelle  sb  ON sb.gml_id = vs.beziehung_von "; // Stelle berechtigt
-	$sql.="JOIN  alkis_beziehungen  vb  ON sb.gml_id = vb.beziehung_von ";	// Verbindung berechtigt
-	$sql.="JOIN  ax_buchungsblatt   bb  ON bb.gml_id = vb.beziehung_zu ";	// Blatt berechtigt
-
-	$sql.="JOIN  ax_buchungsblattbezirk bz ON bb.land = bz.land AND bb.bezirk = bz.bezirk ";
-	$sql.="JOIN  ax_dienststelle ag ON bz.\"gehoertzu|ax_dienststelle_schluessel|land\" = ag.land AND bz.stelle=ag.stelle ";
-
+	$sql.="FROM alkis_beziehungen vf ";											// Verbindung fiktiv
+	$sql.="JOIN ax_buchungsstelle sf ON sf.gml_id = vf.beziehung_von ";	// Stelle fiktiv
+	$sql.="JOIN alkis_beziehungen vs ON sf.gml_id = vs.beziehung_zu ";	// Verbindung Stellen
+	$sql.="JOIN ax_buchungsstelle sb ON sb.gml_id = vs.beziehung_von "; // Stelle berechtigt
+	$sql.="JOIN alkis_beziehungen vb ON sb.gml_id = vb.beziehung_von ";	// Verbindung berechtigt
+	$sql.="JOIN ax_buchungsblatt  bb ON bb.gml_id = vb.beziehung_zu ";	// Blatt berechtigt
+	$sql.="LEFT JOIN ax_buchungsblattbezirk bz ON bb.land = bz.land AND bb.bezirk = bz.bezirk ";
+	$sql.="LEFT JOIN ax_dienststelle ag ON bz.\"gehoertzu|ax_dienststelle_schluessel|land\" = ag.land AND bz.stelle=ag.stelle ";
 	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart ba ON sb.buchungsart = ba.wert ";
-
 	$sql.="WHERE vf.beziehung_zu= $1 ";
 	$sql.="AND  vf.beziehungsart='istBestandteilVon' ";
@@ -459,5 +457,4 @@
 				echo $rowb["bezeichnung"];
 			echo "</td>";
-
 
 			echo "\n\t<td>";
Index: /trunk/var/www/info/alkis/alkisausk.php
===================================================================
--- /trunk/var/www/info/alkis/alkisausk.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisausk.php	(revision 78)
@@ -17,4 +17,5 @@
 	25.01.2011  F. Jäger: Adressen (Lage mit HsNr) zum FS anzeigen	
 					https://trac.wheregroup.com/PostNAS/ticket/6
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 */
 ini_set('error_reporting', 'E_ALL');
@@ -22,6 +23,5 @@
 $gkz=urldecode($_REQUEST["gkz"]);
 require_once("alkis_conf_location.php");
-if ($auth == "mapbender") {
-	// Bindung an Mapbender-Authentifizierung
+if ($auth == "mapbender") { // Bindung an Mapbender-Auth.
 	require_once($mapbender);
 }
@@ -62,8 +62,7 @@
 
 // *** F L U R S T U E C K ***
-$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, ";
-$sql.=" g.gemarkungsnummer, g.bezeichnung ";
+$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung ";
 $sql.="FROM ax_flurstueck f ";
-$sql.="JOIN ax_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 $sql.="WHERE f.gml_id= $1;";
 // Weiter joinen: g.stelle -> ax_dienststelle "Katasteramt"
@@ -140,10 +139,10 @@
 // Analog zu alkisfsnachw.php, Kommentare siehe dort
 $sql ="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung ";
-$sql.="FROM  alkis_beziehungen v ";
-$sql.="JOIN  ax_lagebezeichnungmithausnummer  l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
-$sql.="JOIN  ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
+$sql.="FROM alkis_beziehungen v ";
+$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id "; // Strassennamen JOIN
+$sql.="LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde ";
 $sql.="AND to_char(l.lage, 'FM00000') = lpad(s.lage,5,'0') ";
 $sql.="WHERE v.beziehung_von= $1 "; // id FS";
-$sql.="AND   v.beziehungsart='weistAuf' ";
+$sql.="AND v.beziehungsart='weistAuf' ";
 $sql.="ORDER BY l.gemeinde, l.lage, l.hausnummer;";
 $v = array($gmlid);
@@ -174,15 +173,13 @@
 $sql.="s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, ";
 $sql.="z.bezeichnung, a.bezeichner AS bart ";  // stelle -> amtsgericht
-$sql.="FROM  alkis_beziehungen    bfs "; // Bez Flurst.- Stelle.
-$sql.="JOIN  ax_buchungsstelle      s ON bfs.beziehung_zu=s.gml_id ";
-$sql.="JOIN  alkis_beziehungen    bsb ON s.gml_id=bsb.beziehung_von "; // Bez. Stelle - Blatt
-$sql.="JOIN  ax_buchungsblatt       b ON bsb.beziehung_zu=b.gml_id ";
-$sql.="JOIN  ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
-
+$sql.="FROM alkis_beziehungen bfs "; // Bez Flurst.- Stelle.
+$sql.="JOIN ax_buchungsstelle s ON bfs.beziehung_zu=s.gml_id ";
+$sql.="JOIN alkis_beziehungen bsb ON s.gml_id=bsb.beziehung_von "; // Bez. Stelle - Blatt
+$sql.="JOIN ax_buchungsblatt b ON bsb.beziehung_zu=b.gml_id ";
+$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
 $sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
-
 $sql.="WHERE bfs.beziehung_von= $1 ";
-$sql.="AND   bfs.beziehungsart='istGebucht' ";
-$sql.="AND   bsb.beziehungsart='istBestandteilVon' ";
+$sql.="AND bfs.beziehungsart='istGebucht' ";
+$sql.="AND bsb.beziehungsart='istBestandteilVon' ";
 $sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;";
 
Index: /trunk/var/www/info/alkis/alkisnamstruk.php
===================================================================
--- /trunk/var/www/info/alkis/alkisnamstruk.php	(revision 77)
+++ /trunk/var/www/info/alkis/alkisnamstruk.php	(revision 78)
@@ -11,4 +11,5 @@
 	17.12.2010  Astrid Emde: Prepared Statements (pg_query -> pg_prepare + pg_execute)
 	26.01.2011  Space in leere td
+	01.02.2011  *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
 	ToDo: 
 	Sortierung der GrundbÃŒcher zum Namen
@@ -92,8 +93,8 @@
 	echo "\n<h3><img src='ico/Strasse_mit_Haus.ico' width='16' height='16' alt=''> Adresse</h3>\n";
 	$sql ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland ";
-	$sql.="FROM   ax_anschrift a ";
-	$sql.="JOIN   alkis_beziehungen b ON a.gml_id=b.beziehung_zu ";
-	$sql.="WHERE  b.beziehung_von= $1 ";
-	$sql.="AND    b.beziehungsart='hat';"; //"ORDER  BY ?;";
+	$sql.="FROM ax_anschrift a ";
+	$sql.="JOIN alkis_beziehungen b ON a.gml_id=b.beziehung_zu ";
+	$sql.="WHERE b.beziehung_von= $1 ";
+	$sql.="AND b.beziehungsart='hat';"; //"ORDER  BY ?;";
 	//echo "\n<p class='err'>".$sql."</p>\n";
 
@@ -139,11 +140,11 @@
 	$sql.="g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, ";
 	$sql.="b.bezeichnung AS beznam ";
-	$sql.="FROM  alkis_beziehungen bpn ";
-	$sql.="JOIN  ax_namensnummer   n   ON bpn.beziehung_von=n.gml_id ";
-	$sql.="JOIN  alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
-	$sql.="JOIN  ax_buchungsblatt  g   ON bng.beziehung_zu=g.gml_id ";
-	$sql.="JOIN  ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk ";
+	$sql.="FROM alkis_beziehungen bpn ";
+	$sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
+	$sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
+	$sql.="JOIN ax_buchungsblatt g ON bng.beziehung_zu=g.gml_id ";
+	$sql.="LEFT JOIN ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk ";
 	$sql.="WHERE bpn.beziehung_zu= $1 ";
-	$sql.="AND   bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
+	$sql.="AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
 	$sql.="ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung;";
 	// buchungsblatt... mal mit und mal ohne fuehrende Nullen, bringt die Sortierung durcheinander
