SELECT s.LangNr, s.Kuerzel, bi.PicNr, bitxt.BildNr,bi.osname, bi.pxhoehe, bi.pxbreite, bitxt.alttag, bitxt.title
FROM Bilder AS bi,Bildertexte AS bitxt,Sprachen AS s
WHERE
bi.osname = 'Schwein.jpg' <--- $a
AND s.Kuerzel = 'DE' <--- $b
AND bi.PicNr = bitxt.BildNr
AND bitxt.Sprache = s.LangNr
[...]
Ändere ich $b jedoch in 'EN', dann wird überhaupt kein Datensatz zurückgegeben. Korrekt wäre jedoch ein Datensatz.
Ich hatte übersehen, daß Du ja immer ein Ergebnis haben willst.
Also:
SELECT s.LangNr, s.Kuerzel, bi.PicNr, bitxt.BildNr,bi.osname, bi.pxhoehe, bi.pxbreite, bitxt.alttag, bitxt.title
FROM Bilder AS bi LEFT JOIN Bildertexte AS bitxt, Sprachen AS s
ON bi.PicNr = bitxt.BildNr
WHERE
bi.osname = 'Schwein
AND
(
s.Kuerzel = 'DE'
AND bitxt.Sprache = s.LangNr
)
OR
(
bitxt.Sprache is NULL
)
Wenn Du das letzte Posting von Ilja liest (15. September 2004, 18:49), dann meint er - sicher zu recht - daß das Tabellendesign schlecht wäre. Zumindest der Punkt a) seiner dortigen Erklärungen sind mir unklar.
Er meint, daß Du die Sprache holen sollst, bevor es in biler_text NULL-Werte gibt, aber dann müßtest Du in der Sprachtabelle für jedes Bild die möglichen Sprachen aufführen und außerdem bekommst Du dann schon dort NULL-Werte, weil schein.jpg nun mal dort nicht mir EN aufgeführt wäre. Halte ich im Ganzen nicht für gut, auch weil die Sprache nichts mit dem Bild zu tun hat und wegen der Redundanzen in der Sprachen-Tabelle.
Gruß, Andreas
http://forum.andreas-lindig.de <img src="http://forum.andreas-lindig.de/bilder/logo.png" border="0" alt="">
einfach mal testen und Meinung hinterlassen