Ключ таблицы items состоит из ( lang , id ).Некоторые предметы имеют переведенные названия на разных языках.Я хочу создать такой запрос, который бы возвращал все элементы из БД на заданном языке, и если элемент не имеет перевода, чтобы вернуть непереведенное значение.
Скажем, я хочу, чтобы все предметы были написаны на болгарском языке.Вот где я застрял:
SELECT lang, id, name
FROM items
WHERE lang = "bg" OR lang = "en"
GROUP BY id
Проблема возникает, когда есть предмет, скажем, ( 1 , "en" ) и предмет( 1 , "bg" ).Идентификаторы одинаковы.Тогда как MySQL или SQLite определяют, какой результат вернуть?Могу ли я сказать, что я предпочел бы вернуть ( 1 , "bg" ), если он существует, но если его нет, ( 1 , "en" ) меня бы устроили?
PS Для дальнейшей иллюстрации того, что я хочу, давайте представим, что база данных содержит следующие записи со схемой (id,lang, name):
( 1 , "en" , "abc" )
(2 , "en" , "cde" )
( 3 , "en" , "def" )
( 1 , "bg" , "абв" )
( 3 , "bg" , "жзи" )
После выполнения требуемого запроса на болгарском языке я должен получить:
( 1 , "бг" , "абв" )
( 2 , "en" , "cde" )
( 3 , "bg" , "жзи" )