vodnicear
@vodnicear

Как лучше написать SELECT для переводов товара?

есть таблица product и product_translate

для одного товара есть переводы на нескольких языках

нам нужно выбрать язык который лучше понимает пользователь (имееться его id) если такого перевода нет, то выбираем любой другой

это всё в одном запросе

как лучше написать?

product_translate:
5cf7a26aab2aa671083287.png
можно подзапросы использовать, но придёться 2 подзапроса написать, 1 для title, 2 для description

и ещё не понятно как написать ORDER BY в подзапросах
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
select ...
from product as p
join lateral (
select title, description from product_translate as pt
where pt.product_id = p.id order by language_id = ? limit 1
) on true
where ....


Как обычно мог напутать направление сортировки - допишите desc если перевод есть, но выбирается не он.

Идея выбирать любой другой язык в случае отсутствия нужного - странная. Но запрос я написал именно такой.
Если переводов нет вообще - сейчас такой товар не будет выводиться. Если нужен с NULL вместо текста - заменить джойн на left join.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы