wuscheck: Probleme mit LEFT OUTER JOIN

Hallo,

ich habe ein Problem mit LEFT OUTER JOIN, weil ich nicht ganz genau weiss, ob das Ergebnis was ich erwarte überhaupt damit umgesetzt werden kann... und wenn ja, warum meine Ergebnis von der Erwartung abweicht...

Aber erst mal mal von vorne...

Ich habe insegesamt zwei Tabellen:

Tabelle A:
-ID
-Vorname
-Nachname

Tabelle B:
-ID
-SpielID
-SpielerID
-Feld
-SM
-Gesamt

In meinem Formular wird die SpielID (Beispiel: 46) übergeben.

Es soll nun ein Pulldown (option) geben, dass alle Daten aus Tabelle A enthält. Gibt es einen Eintrag in Tabelle B mit der Spielid 46, dann sollen diese ausgelesen werden. Das Pulldown soll dann mit dem Select auf dem Namen stehen, der in der Tabelle B mit SpielerID verschlüsselt wurde... dafür hatte ich folgenden Code vorgesehen:

<?php
$query="SELECT A.id, A.vorname, A.nachname, B.spielid, B.spielerid, B.feld, B.sm, B.gesamt FROM tvk_spieler AS A LEFT OUTER JOIN tvk_torstatistik AS B ON A.id = B.spielerid WHERE B.spielid='$id' ORDER BY B.gesamt DESC";
$result=mysql_query($query)
or die ("Query could not be performed");
$anzahl=mysql_numrows($result);
    for ($i=0;$i<$anzahl;$i++) {
     $spielid=mysql_result($result, $i, "spielid");
     $spielerid=mysql_result($result, $i, "spielerid");
     $feld=mysql_result($result, $i, "feld");
     $sm=mysql_result($result, $i, "sm");
     $gesamt=mysql_result($result, $i, "gesamt");
     $id3=mysql_result($result, $i, "id");
     $vorname=mysql_result($result, $i, "vorname");
     $nachname=mysql_result($result, $i, "nachname");

?>
    <tr bgcolor="#000066" bordercolor="#003399">
      <td width="10%">
                <div align="center"><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">
          <select name="spielerid[]">
          <?

$Selected = "";
   if ($id3 = $spielerid):
        $Selected = " SELECTED ";
        else:
        $Selected = "";
   endif;
   echo "<option VALUE = '$id3' $Selected>";
echo "$vorname $nachname</OPTION>\n";

?>
        </select>
          </font></div>
      </td>

<td width="10%" nowrap>
        <div align="center"><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">
          <?php echo"<input type='text' style='text-align: center' name='feld[]' style='text-align: center' size='5' maxlength='2' value='$feld[$i]' onChange='calc$i()'>"; ?>
          </font></div>
      </td>
      <td width="10%" nowrap>
        <div align="center"><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">
          <?php echo"<input type='text' name='sm[]' style='text-align: center' size='5' maxlength='2' value='$sm[$i]' onChange='calc$i()'>"; ?>
          </font></div>
      </td>
      <td width="10%" nowrap>
        <div align="center"><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">
          <?php echo"<input type='text' name='gesamt[]' readonly style='BACKGROUND-color: #CCCCCC;text-align: center' size='5' maxlength='2' value='$gesamt[$i]'>"; ?>
          </font></div>
      </td>
    </tr>
    <?php
    }
    ?>

Als Ergebnis erhalte ich jetzt zwar die Datensätze, die in Tabelle B mit der entsprechenden SpielID abgelegt wurden. Auch der Select und die Verknüpfung mit dem Spieler-Namen wird richtig angezeigt. Allerdings hat das Pulldown auch nur diesen einen Spieler und nicht wir gewünscht alle Einträge aus Tabelle A.

Kann mir da jemand helfen... habe ich einen groben Fehler im Code oder ist das mit LEFT OUTER JOIN nicht machbar?

  1. Hallo,

    nur zu Info, was hat HTML mit Left Outer Join zu tun?

    Hast Dir schonmal nur das Ergebnis der Abfrage anzeigen lassen?
    Dann siehst Du vielleicht, ob der Fehler in der Abfrage liegt, oder in deinem php-code.

    Gruss Sandine

    1. Hallo,

      nur zu Info, was hat HTML mit Left Outer Join zu tun?

      Hast Dir schonmal nur das Ergebnis der Abfrage anzeigen lassen?
      Dann siehst Du vielleicht, ob der Fehler in der Abfrage liegt, oder in deinem php-code.

      Gruss Sandine

      Habe den Fehler in sofern eingekreist, dass ich mittlerweile bemerkt habe, das nicht mehr im Select kommen kann, weil die Schleife fehlt... wenn man(n) natürlich nur einmal ausliest, bleibt's halt bei der einen besagten Zeile....

      Naja, hauptsache dass ich den Grund dafür erkannt habe... trotzdem Danke!

      Gruss

      wuscheck