Запрос на перевод - PullRequest
       2

Запрос на перевод

1 голос
/ 27 августа 2011

У меня есть таблица MySQL с переводами.Сейчас я ищу запрос, который возвращает мне первый перевод, соответствующий заданному списку языков:

Допустим, доступно 4 перевода строки:

id          lang     translation
--------------------------------
greeting    en       hey!
greeting    de       Hallo.
greeting    de_at    Servus!
greeting    de_ch    Grüezi

Желаемый результатзапрос в зависимости от заданного списка языков:

language list    result
-----------------------
de,en            Hallo.
en,de            hey!
de_at,de,en      Servus!

Возможно ли это в одном запросе?

Ответы [ 2 ]

1 голос
/ 27 августа 2011
SELECT COALESCE( de_at.translation, de.translation, en.translation )
  FROM (SELECT 'greeting' AS id) AS id
  LEFT JOIN translations AS de_at ON( de_at.lang = 'de_at' AND id.id = de_at.id )
  LEFT JOIN translations AS de ON( de.lang = 'de' AND id.id = de.id )
  LEFT JOIN translations AS en ON( en.lang = 'en' AND id.id = en.id )

Я должен указать Эдди за эту технику.

1 голос
/ 27 августа 2011

Попробуйте это:

SELECT * FROM translations t WHERE id = 'greeting' AND lang IN ('de_at', 'de', 'en') ORDER BY FIELD(lang, 'de_at', 'de', 'en') LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...