Viennamade: Ersatz für Subselect

Beitrag lesen

Hallo!

Ohne Erfolg bedeutet, daß ich nur Datensätze bekomme wo es mindestens eine Zeile in der Tabelle Bildertexte gibt.

nein, das sollte nicht passieren, dann muss noch woanders ein fehler vorliegen vielleicht spaltennamen verwechselt. LEFT JOIN sorgt dafür, dass alle datensätze der linken tabelle genommen werden, egal ob es passende datensätze in de rechten tabelle gibt. ich denke mal, einfach noch mal deine dateninhalte durchgehen. ein tip, du kannst den join est einmal über nur zwei tabellen durchführen und dann zu drei übergehen, wenn du das gewünschte ergebnis mit zwie tabllen erreicht hast.

ein tip, du kannst den join est einmal über nur zwei tabellen durchführen und dann zu drei übergehen, wenn du das gewünschte ergebnis mit zwie tabllen erreicht hast.

Ich habe Deinen Tipp (Danke) umgesetzt. Das heißt, ich habe mal die dritte Tabelle weggelassen und mit 2 Bildern getestet:
  x95.gif hat einen Bildertext mit dem Sprachkennzeichen 1 in der Tabelle Bildertext
  x96.gif hat keinen Bildertext

Zum Testen gebe ich am Bildschirm wie folgt aus:

if ($list->numRows())
  {
    while ($sql_fetch_rows = $list->fetch(MYSQL_ASSOC))
      {
      echo '<pre>';
      print_r($sql_fetch_rows);
      echo '<pre>';
      }

Für x95.gif wird ein Datensatz ausgegeben:
 SELECT bi.osname,bi.pxhoehe,bi.pxbreite,bitxt.alttag,bitxt.title FROM Bilder as bi LEFT JOIN Bildertexte as bitxt ON (bi.PicNr = bitxt.BildNr) WHERE bi.osname ='x95.gif' AND bitxt.Sprache = 1

Für x96.gif hingegegen keiner:
SELECT bi.osname,bi.pxhoehe,bi.pxbreite,bitxt.alttag,bitxt.title FROM Bilder as bi LEFT JOIN Bildertexte as bitxt ON (bi.PicNr = bitxt.BildNr) WHERE bi.osname ='x96.gif' AND bitxt.Sprache = 2

Ich verstehe es absolut nicht.

Bitte um Hilfe
Viennamade