dblearn94
@dblearn94

Получить запись, а если ее нет, то родительский элемент?

Столкнулся с проблемой, в sql я слаб.

есть такая структура:
page - id, title, parent_id

options - id, name
page_options - id, option_id, page_id, value

должно работать так:
Для текущей страницы, смотрим, есть ли опции (смотрим page_options), если есть - возвращаем, если page_options для текущей id не найдено, то смотрим родителя текущей страницы и возвращаем уже опции для родителя.

Как примерно такое реализовать, без лишних проверок в php и лишних запросов, как будет правильно?

Вот такая схема:
5dc923d038099545472686.png
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@Hedy
with cte as (
    select p.id, p.parent_id, o.name from page p
    left join page_options po on po.page_id = p.id
    left join options o on o.id = po.option_id
) 
select coalesce(o.name, (select o.name from cte where id = cte.parent_id) ) from cte
where id = :ID
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы