У меня есть две таблицы: cat
и cat_name
.
cat
:
id
--
1
2
cat_name
:
id | cat_id | locale | name
---------------------------
1 | 1 | en | John
2 | 1 | fr | Jean
3 | 2 | en | Jane
Мой SQL, чтобы получить списоккошек и их имена для данной локали:
SELECT `cat`.`id` AS `id`, `cat_name`.`name` AS `name` FROM `cat`
LEFT JOIN `cat_name` ON `cat`.`id` = `cat_name`.`cat_id` AND `cat_name`.`locale` = 'fr'
Это работает, но когда имя кошки не имеет перевода для данной локали (например, в приведенном выше примере, если мы хотим получить fr
имя для кошки 2
), значение name
, как и ожидалось, null
.
Что я не могу понять, так это как, учитывая запасную локаль (например, en
),проверить, является ли результат JOIN
равным null
, и если да, то получить name
резервной локали.Т.е. в приведенном выше примере, чтобы вернуть имя кота Jane
, даже если установлен языковой стандарт fr
.