@eldar_web

Как составить SQL запрос с определенным условием?

Есть две таблицы prices и price_items (принадлежит к prices - references price_id).
Для них этих двух таблиц есть одна таблица - рейтинги ratings с полями:
type_id: здесь может быть id prices или price_items
type_name: 'price' или 'price_items'
ball: соответственно рейтинг

Как вытащить одним запросом рейтинг (ball) у prices_items c условием, что если у него отсутствует запись, то берем ball у родителя price?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
LaRN
@LaRN
Senior Developer
Не совсем ясна цель запроса, зачем выводит просто столбец значений без ключей.
Немного громоздко, но можно так попробовать:
select prt.ball 
   from price_ratings prt
 where prt.type_name = 'price_items'
  union
  select prt.ball 
    from price_ratings prt
       left join price_items pr
                on pr.price_id       = prt.type_id
       left join price_ratings pp
                on pp.type_id       = pr.id
              and pp.type_name = 'price_items'  
   where prt.type_name  = 'price'
       and pp.ball     is null


или так

select isnull(prt.ball, pri.ball)
  from price_items pi
  left join price_ratings prt
         on prt.type_id   = pi.id
		and prt.type_name = 'price_items' 
  left join price_ratings pri
         on pri.type_id   = pi.price_id
		and pri.type_name = 'price'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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