SQL-запрос для извлечения строк на определенном языке (с языком по умолчанию) - PullRequest
2 голосов
/ 17 апреля 2011

У меня есть таблица с городами:

  • CITY_ID
  • имя
  • LanguageCode

Пример данных (city_id, name, languagecode):

  • 1, LondonName, en
  • 1, LondonName, de
  • 1, LondonName123, jp
  • 2, Барселона, en
  • 2, Барселона123, де,
  • 3, Мадрид, en

Как я могу получить все города на определенном языке (например, де), но если там нет перевода городов на этом языке, я хочу получить перевод на язык по умолчанию (то есть английский) для этой строки.

Итак, результат для языкового кода "de" должен быть таким:

  • 1, LondonName, de
  • 2, Барселона123, де
  • 3, Мадрид, en

База данных: MySQL

1 Ответ

2 голосов
/ 17 апреля 2011

Я обычно предпочитаю использовать JOIN, а не внутренний выбор, так что вот второй вариант:

SELECT c.city_id,
IF(c2.name IS NULL,c.name,c2.name) 'name',
IF(c2.languagecode IS NULL, c.languagecode, c2.languagecode) 'languagecode'
FROM cities c
LEFT JOIN cities c2 ON c.city_id = c2.city_id AND c2.languagecode = 'de'
WHERE c.languagecode = 'en'
GROUP BY c.city_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...