Ich habe eine Multi-Language-App gebaut. Die Datenbank wie folgt aussieht:Wenn ein Datensatz nicht existiert, wähle einen anderen
Tabelle Dinge
|id| img |url|
--------------
|1 | | |
|2 | | |
|3 | | |
Tabelle things_translations
|id| thing_id | title | locale |
---------------------------------
|1 | 1 | | en |
|2 | 2 | | en |
|3 | 3 | | en |
|4 | 2 | | ru |
ich die Standard-Sprache in Englisch (locale = en) haben.
Wenn ich die Übersetzungen title
von things_translations
in einer anderen Sprache als Englisch bekomme und diese Sprache noch nicht in der Datenbank existiert, würde ich gerne die englische Version davon bekommen.
Ich habe die unten Abfrage versucht, aber gibt alle Datensätze statt:
select things.id
FROM things
INNER JOIN things_translations ON things.id = things_translations.thing_id
WHERE CASE WHEN things_translations.locale = ru IS NULL
THEN things_translations.locale = en END
Mit der obigen Abfrage, die ich für thing_id:2
sowohl Sprache bekommen, aber ich will nur die ru locale
nicht die en
weil exist bekommen.
Können Sie auch das erwartete Ergebnis hinzufügen? – jarlh
Warum versuchen Sie nicht, OR-Bedingung? anstatt dinge_translations.locale = ru oder sachen_translations.locale = de – Gopidoss
@jarlh Ich möchte immer nur ein Gebietsschema für jedes Ding nicht alle bekommen. –