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:
Wie bekomme ich da jetzt das Englisch mit rein???
:help:
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
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':help:
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.
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.
29.11.2008
22:43 von
TBT
Code
1
2
3
4
5
6
7
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'
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ß
if wert1 isnull dann wert2 wenn auch der isnull dann wert3 und wenn der isnull dann wert4
Besten Gruß