Этот вопрос закрыт для ответов, так как повторяет вопрос Как составить SQL запрос с определенным условием?
@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?
Вроде так не работает:
SELECT price_ratings.ball FROM price_ratings, price_items
WHERE price_ratings.type_id IN (CASE
WHEN price_ratings.type_id != price_items.id THEN price_items.price_id
END)
  • Вопрос задан
  • 54 просмотра
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `r`.`ball`
  FROM (
    (SELECT `ball`, 0 AS `order`
      FROM `ratings` 
      WHERE `type_id` = :priceItemsId
        AND `type_name` = 'price_items')
    UNION (SELECT `r`.`ball` AS `ball`, 1 AS `order`
      FROM `price_items` AS `i` 
      JOIN `ratings` AS `r`
        ON `i`.`id` = :priceItemsId
          AND `r`.`type_id` = `i`.`price_id`
          AND `r`.`type_name` = `price`)
  ) AS `r`
  ORDER BY `r`.`order`
  LIMIT 1
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы