28.11.2008 15:52 von Gast
[MySQL] Mehrsprachigkeit - Fallback 

Hi,

kann mir jemand bei einer SQL-Abfrage helfen?
Ich möchte ein Projekt mehrsprachig machen, und habe mir dafür Tabellen angelegt

sprache (id, sprachname) - enthält (1,'deutsch'), (2, 'englisch')
texte (id, name, memo) - die verschiedenen Texte für das System (über den unique "name" abrufbar)
texte_sprache (sprache_id, texte_id, inhalt)

Wie muss dafür die SQL Anweisung aussehen, dass er automatisch den deutschen Text anzeigt,
wenn kein englischer Text vorhanden ist?
Meine aktuelle Anweisung sieht so aus:

Code
1
2
3
4
5
6
select t.name, ts.inhalt from texte t inner join text_sprache ts on ( it.id = ts.texte_id ) inner join sprache s on ( ts.sprache_id = s.id ) where t.name = 'gesuchter Wert' and s.sprachname = 'deutsch'
Wie bekomme ich da jetzt das Englisch mit rein???

:help:
Zitat

Werbung

28.11.2008 17:12 von Abraxax
 

sollte es nicht andersherum heißen? also erst die sprachversion nutzen, welche der user gewählt hat und erst dann auf den "default"-wert englisch wechseln?

wie auch immer ... versuche doch die sprach-tabelle mit sich selber zu join'en.

in der ersten spalte soll die wunsch-sprachversion des users hinterlegt werden, in der zweiten spalte die alternative. ist in der ersten spalte kein wert (evtl NULL), kannst du die alternative nutzen.
Zitat

29.11.2008 22:43 von TBT
 

Code
1
2
3
4
5
6
7
select t.name, IF( ISNULL( ts.inhalt ), ts2.inhalt, ts.inhalt ) AS inhalt from texte t left join text_sprache ts on ( it.id = ts.texte_id AND ts.sprache_id = 'Nummer gesuchte Sprache' ) inner join text_sprache ts2 on ( it.id = ts2.texte_id AND ts2.sprache_id = 'Nummer Fallbacksprache' ) where t.name = 'gesuchter Wert'
sollte funktionieren
Zitat

13.10.2009 13:52 von Gast
 

wow, danach habe ich schon lange gesucht. Hast Du vielleicht auch noch eine Möglichkeit mit mehreren Alternativen.

if wert1 isnull dann wert2 wenn auch der isnull dann wert3 und wenn der isnull dann wert4

Besten Gruß
Zitat

ähnliche Themen

Schnellantwort