Guten Tag,
ich habe Schwierigkeiten, eine Idee per MySQL in die Tat umzusetzen und hoffe, hier Tipps zu erhalten.
Die Problemschilderung:
Es ist eine Tabelle vorhanden, welche folgende Felder enthält:
id
INT auto_increment PRIMARY_KEY
key
TEXT NOT NULL
en\_value
TEXT NULL
de\_value
TEXT NULL
fr\_value
TEXT NULL
...
Es handelt sich dabei um eine Sprachtabelle, in welcher einem bestimmten Schlüssel der jeweilige Ausdruck in einer Sprache zugeordnet wird.
Beispiel:
Schlüssel (key
): hello
englischer Wert (en\_value
): hello
deutscher Wert (de\_value
): Hallo
französischer Wert (fr\_value
): Salut
Nun steht mir bei der Abfrage das Sprachkürzel zur Verfügung (d.h. englisch->en, deutsch->de, französisch->fr). Ich möchte anhand von diesem Kürzel den entsprechenden Wert auslesen.
Beispiel für deutsche Sprache:
SELECT de\_value
FROM lang
WHERE key
= 'hello';
Klappt soweit natürlich.
Wenn jedoch kein Wert für den deutschen Ausdruck hinterlegt ist, so möchte ich den englischen auslesen.
SELECT de\_value
, en\_value
FROM lang
WHERE key
= 'hello';
Das liest mir jedoch immer sowohl den deutschen, als auch den englischen aus.
Ich möchte jedoch, dass versucht wird, den deutschen auszulesen, und erst wenn dies fehlschlägt, der englische ausgelesen wird.
Auf zwei Abfragen aufgeteilt würde das so aussehen:
SELECT de\_value
AS value
FROM lang
WHERE key
= 'hello' AND value
IS NOT NULL;
(Überprüfung, ob Query erfolgreich. Wenn nein, zweites Query:)
SELECT en\_value
AS value
FROM lang
WHERE key
= 'hello' AND value
IS NOT NULL;
Wie kann ich diese zwei Abfragen in einer zusammenfassen?
Der LEFT-, RIGHT- und INNER-JOIN scheinen mir dafür ungeeignet.
Habt Ihr einen Tipp, wie ich das realisieren kann?
Vielen Dank für Eure Mühe!