@Shillkas11

Почему нельзя использовать алиасы при выборке?

Есть следующий запрос:

SELECT id, (SELECT COUNT(product_detail_id) FROM products_details WHERE product_detail_id = p.id AND product_detail_type_id IN (1, 4, 123)) as 'match_product_details_types', (CASE WHEN match_product_details_types = 0 THEN 'no' ELSE 'yes' END) as 'match_res' FROM product p


Дело в том что при выполнении запроса происходит ошибка
#1054 - Неизвестный столбец 'match_product_details_types' в 'field list'
, т.е. уже при вычислении match_resmatch_product_details_types не найден. Как можно это реализовать?

P.S. Запрос примерный, в реальном запросе проверка match_product_details_types идет на десятки значений, упростил для понимания, поэтому использовать напрямую match_product_details_types нельзя.
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
@luna3956
Если правильно понял что Вам нужно то как-то так:

select 
  p.id,
  (CASE WHEN t1.num = 0 THEN 'no' ELSE 'yes' END) as 'match_res' 
from product p
inner join (
  SELECT product_id, COUNT(product_detail_id) as num
  FROM products_details 
  WHERE 
    product_detail_type_id IN (1, 4, 123)
  group by product_id
) t1 on
  t1.product_id = p.id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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