Hallo zusammen
Ich steh bei einer Datenbankabfrage an... Es geht darum, dass ich aus einer Tabelle alle Einträge einer Unterseite der Website in der gewählten Sprache auslesen möchte.
Angenommen, ich habe eine Tabelle mit der folgenden Struktur:
id   key               lang   text
1    form1_eintrag1    de     Dies ist mein erster Text
2    form1_eintrag1    en     This is my first text
3    form1_eintrag2    de     Zweiter Text
4    form1_eintrag2    en     Second text
5    form1_eintrag3    de     Dritter Text
6    form2_eintrag1    de     Formular zwei, Eintrag 1
7    form2_eintrag1    en     Second form, first entry
Die Standardsprache ist Deutsch (de); für jeden key ist sicher immer ein deutscher Eintrag in der Datenbank. Wenn aber z.B. Englisch gewählt ist (en), kann es sein, dass ein Eintrag noch nicht übersetzt wurde (z.B. ID 5). In diesem Fall soll für diesen key der deutsche Eintrag selektiert werden.
Das Resultat sollte für den Bereich form1_ demnach so aussehen, wenn Deutsch gewählt wurde:
1    form1_eintrag1    de     Dies ist mein erster Text
3    form1_eintrag2    de     Zweiter Text
5    form1_eintrag3    de     Dritter Text
Und so, wenn Englisch gewählt wurde:
2    form1_eintrag1    en     This is my first text
4    form1_eintrag2    en     Second text
5    form1_eintrag3    de     Dritter Text
Ich hab's so probiert:
SELECT * FROM test WHERE key LIKE 'form1_%' AND (lang = 'en' OR lang = 'de') GROUP BY key;
Das ergibt folgendes Resultat:
1    form1_eintrag1    de     Dies ist mein erster Text
3    form1_eintrag2    de     Zweiter Text
5    form1_eintrag3    de     Dritter Text
Wie kann ich das Resultat so sortieren, dass zuerst meine Abfrage auch für den zweiten Fall klappt? Es wäre natürlich wenn das Ganze auch funktionieren würde, wenn die Zweitsprache z.B. be wäre (also im Alphabet vor de).
Ich bin froh um jeden Tipp!
Herzlichen Dank und liebe Grüsse
Bambi
Nun möchte ich abfragen, dass
 nicht angemeldet
 nicht angemeldet