Achtung, der Titel beschreibt mein Problem mehr schlecht als recht. Das ist leider nicht kurz zu formulieren.
Ich stells mal so einfach wie möglich dar:
Ich habe die tabellen
'images' - columns 'imgid', 'imgname'
und
'imageinfo' - columns 'imgid','language', 'info'
language kann englisch oder deutsch sein. Standard ist englisch, doch wenn der User deutsch eingestellt hat, wird die info, soweit vorhanden, auf deutsch dargestellt. Daher war meine erste überlegung, die imageinfo-tabelle doppelt zu joinen, zuerst mit der Standardsprache, und dann mit der Wunschsprache - ins selbe feld, sodass ich mich danach nur noch das Feld 'info' auslesen muss.
Doch da komme ich leider an meine Grenzen - wenn ein User auf deutsch gestellt hat, und der eintrag auf deutsch nicht definiert ist, wird der englische info-eintrag mit null überschrieben.
Statt des ganzen Textes dürfte ein Beispiel mehr Licht in die Sache bringen:
Dass es so nicht funktionieren kann erklärt sich von selbst, klar dass im Ergebnis der Info-Wert immer von i2 definiert wird. Aber ich möchte gerne, dass i2 den Wert von i1 nur überschreibt, wenn i2 etwas gefunden hat!
Irgendjemand eine Idee ob - und wie - das zu bewerkstelligen ist?
Vielen Danke für jede Hilfe schonmal!
Ich stells mal so einfach wie möglich dar:
Ich habe die tabellen
'images' - columns 'imgid', 'imgname'
und
'imageinfo' - columns 'imgid','language', 'info'
language kann englisch oder deutsch sein. Standard ist englisch, doch wenn der User deutsch eingestellt hat, wird die info, soweit vorhanden, auf deutsch dargestellt. Daher war meine erste überlegung, die imageinfo-tabelle doppelt zu joinen, zuerst mit der Standardsprache, und dann mit der Wunschsprache - ins selbe feld, sodass ich mich danach nur noch das Feld 'info' auslesen muss.
Doch da komme ich leider an meine Grenzen - wenn ein User auf deutsch gestellt hat, und der eintrag auf deutsch nicht definiert ist, wird der englische info-eintrag mit null überschrieben.
Statt des ganzen Textes dürfte ein Beispiel mehr Licht in die Sache bringen:
Code:
SELECT
img.imgname,
i1.info AS info,
i2.info AS info
FROM images AS img
LEFT JOIN imginfo AS i1
ON (i1.imgid = img.imgid AND i1.language="en")
LEFT JOIN imginfo AS i2
ON (i2.imgid = img.imgid AND i2.language="de")
LIMIT 1
Dass es so nicht funktionieren kann erklärt sich von selbst, klar dass im Ergebnis der Info-Wert immer von i2 definiert wird. Aber ich möchte gerne, dass i2 den Wert von i1 nur überschreibt, wenn i2 etwas gefunden hat!
Irgendjemand eine Idee ob - und wie - das zu bewerkstelligen ist?
Vielen Danke für jede Hilfe schonmal!