Hallo Ilja!
was deine dritte tabelle angeht, so ist sie in dieser form überflüssig.
Auf das aktuelle Beispiel bezogen stimmt das, aber die Tabelle ist für x andere Abfragen notwendig. Und natürlich könnte ich das Problem umschiffen, zum Beispiel die 4 Datensätze für die Sprachen (1=de,2=en, ...) in die PHP-Session einlesen und somit könnte ich - nicht nur bei "unserer" Abfrage - direkt auf die jeweilige Verknüpfung zur Sprach-ID zugreifen, hier: bitxt.Sprache.
Aber ich "will" das jetzt so haben, weil ich ganz einfach wissen will wie diese Abfrage läuft und so lange Deine Bereitschaft zu Leiden vorhanden ist werde ich sie ausnützen ;-) Ich hoffe der Chardonnay mindert sie nicht und wünsche "Wohl bekomms!" :-)
das würde ich ebenfalls ändern, für die bildertexte eine eigene id anlegen und einen fremdschlüssel deklarieren, der auf die erste tabelle verweist.
Das gibts schon: bitxt.BildNr ist der Fremdschlüssel zu bi.PicNr, bitxt.PicID ist die eigene id.
Auf das Ergebnis bezogen war dieser Abfragestring perfekt (wobei hier nur mit 2 Tabellen gearbeitet wird):
"SELECT bi.osname, bi.pxhoehe, bi.pxbreite, bitxt.alttag, bitxt.title
FROM Bilder as bi
LEFT OUTER JOIN Bildertexte as bitxt
ON (bi.PicNr = bitxt.BildNr AND bitxt.Sprache = " . $lang . ")
WHERE bi.osname = '" . $osname . "'"
Er führte zu korrekten Datensätzen wie
- bei $osname='x96.gif' und $lang = 1:
=> $result: ['osname']=x96.gif, ['alttag']=''
('alttag' ist leer, da kein bitxt.Datensatz mit Sprache 1 (=DE) für x96.gif vorhanden.)
- bei $osname='x95.gif' und $lang = 1:
=> $result: ['osname']=x95.gif, ['alttag']='Das ist eine Kuh'
(alttag hat Inhalt, da ein bitxt.Datensatz mit Sprache 1 (=DE) für x95.gif vorhanden.)
- bei $osname='x96.gif' und $lang = 2:
=> $result: ['osname']=x95.gif, ['alttag']='This is a cow'
(alttag hat Inhalt, da ein bitxt.Datensatz mit Sprache 2 (=EN) für x95.gif vorhanden.)
Wie gesagt, perfekte Ergebnisse, also
- immer ein einziger Datensatz,
- bitxt leer wenn kein bitxt.Sprache mit $lang für das enstprechende Bild ($osname) vorhanden ist,
- bitxt mit Inhalt, wenn Datensatz mit bitxt.Sprache == $lang für das gewünschte Bild vorhanden ist.
Aber das ganze muß doch auch möglich sein, wenn man die 3. Tabelle "Sprachen" hernimmt und so nicht mit 1,2,3,4 sondernd mit 'de','en',... abfrägt.
Denn die Tabelle Sprachen hat die id 'LangNr' und im Feld bitxt.Sprache stehen diese Sprach-IDs drinnen.
man könte nun noch mehr abfragen gestalten, aber es wäre besser, du sagst mir, welche genau du haben willst.
Bitte frage mich, wenn ich es noch nicht richtig rübergebracht habe.
Danke Ilja
Viennamade