Setor
Новичок
Выборка мультиязычных данных из БД
Доброго времени суток,
Столкнулся со следующей проблемой: нужно выбрать из таблицы мультиязычные данные для определённого языка (упрощённая структура БД):
Загвоздка заключается в том, что нужно выбрать все записи по ID на русском, а для тех, кому не задан русский вариант, вытягивать английский. Т.е. на выходе должно получиться такое:
Но не могу придумать как это красиво сделать (в плане логики и производительности). Используется в достаточно нагруженном проекте. В таблице несколько тысяч записей (выбирается из всей кучи обычно не более 100 записей). До этого использовал такой метод: выбирал все русские и английские записи, потом делал сортировку по полю lang (в реале используется цифровые идентификаторы языка, у английского языка ID 0, у русского ID 1 + есть другие языки), потом делал группировку по полю gid, тем самым обрезался лишний вариант перевода, но это какой-то костыль, может есть решение попроще? В документации по MySQL вообще сказано, что поведение ф-ции Group By в таких случаях вообще неопределено, но на деле она оставляет первую запись, остальные откидывает.
Доброго времени суток,
Столкнулся со следующей проблемой: нужно выбрать из таблицы мультиязычные данные для определённого языка (упрощённая структура БД):
Код:
id | gid | lang | name
1 1 ru Компьютер
2 1 en Computer
3 2 en Monitor
Код:
id | gid | lang | name
1 1 ru Компьютер
3 2 en Monitor