Оператор выбора MySQL с CASE или IF ELSEIF? Не уверен, как получить результат

У меня есть две таблицы. Каждый имеет информацию о производителе и включает регионы, где они могут продавать. У другого есть свои продукты для продажи. Мы должны ограничить видимость продукта в зависимости от регионов. Это похоже на то, что Netflix имеет в своей системе видео, которые можно просматривать только везде (1), только в Канаде (2), только в США (3).

Я пытаюсь сделать запрос, который говорит мне, где продукт может быть просмотрен на основе настроек в таблице производителя.

Например, в таблице производителя есть два поля с именами expose_new и expose_used, каждое из которых будет иметь значение 1,2 или 3, чтобы ограничить область просмотра их новых или использованных видео.

Когда видео добавляются, им не присваивается значение «expose», и это должно быть сделано на лету при добавлении их в наш индекс в зависимости от значений expose_new или expose_used текущего производителя.

То, что я пытаюсь получить, - это детали товара и вычисленное значение, где его можно увидеть, основываясь на том, является ли он новым или использованным, а также на правиле / значении, назначенном производителю для всех их новых или использованных продуктов. Мне нужна эта единственная цифра для каждого продукта, чтобы условно отобразить ее в списке.

Следующее не работает, но вы поймете, что я пытаюсь сделать. Я попробовал это с заявлениями CASE и следующим НЕПРАВИЛЬНЫМ оператором IF / ELSEIF.

Любая помощь в отладке этого и указать мне правильное направление будет принята с благодарностью.

SELECT 
t2.company_name,
t2.expose_new,  // 1,2 or 3
t2.expose_used, // 1,2 or 3
t1.title,
t1.seller,
t1.status,  //can be new or used
(SELECT 
IF(status ='New',
  (select expose_new from manufacturers where id = t1.seller),1
)
ELSEIF(t1.status ='Used',
  (select expose_used from manufacturers where id = t1.seller),1
)
END IF
) as 'expose'
FROM `products` t1
join manufacturers t2 on t2.id = t1.seller
where t1.seller = 4238

Вот версия CASE, которая на самом деле, кажется, выполняется, но всегда приводит к первому значению, независимо от того, что происходит в действительности (в данном случае 1). Я не уверен, что у меня может быть добавление другого теста с AND в каждом операторе WHEN, но это не дает ошибку, только неверный результат.

SELECT 
t2.company_name,
t2.expose_new,
t2.expose_used,
t1.title,
t1.status,
 CASE status
   when 'New' and t2.expose_new = 1 then 1
   when 'New' and t2.expose_new = 2 then 2
   when 'New' and t2.expose_new = 3 then 3
   when 'Used' and t2.expose_used = 1 then 1
   when 'Used' and t2.expose_used = 2 then 2
   when 'Used' and t2.expose_used = 3 then 3
END as expose
FROM `products` t1
join manufacturers t2 on t2.id = t1.seller
where t1.seller = 4238

Ответы на вопрос(3)

Ваш ответ на вопрос