Sentencia select @MySQL con CASE o IF ELSEIF? No estoy seguro de cómo obtener el resultado

Tengo dos mesas. Uno tiene información del fabricante e incluye las regiones donde pueden vender. El otro tiene sus productos a la venta. Tenemos que limitar la visibilidad del producto según las regiones. Es como si Netflix tuviera videos en su sistema que solo se pueden ver en todas partes (1), solo en Canadá (2), solo en EE. UU. (3).

Estoy tratando de hacer una consulta que me dice dónde se puede ver el producto según la configuración de la tabla del fabricante.

Por ejemplo, en la tabla del fabricante, hay dos campos llamados expose_new y expose_used, cada uno de los cuales tendrá un valor de 1,2 o 3 para limitar dónde se pueden ver sus videos nuevos o usados.

Cuando se agregan los videos, no se les asigna un valor de 'exposición' y esto se debe hacer sobre la marcha al agregarlos a nuestro índice, dependiendo de los valores actuales de expose_new o expose_used del fabricante actual.

Lo que estoy tratando de obtener son los detalles del artículo y el valor calculado de dónde se puede ver en función de si es nuevo o usado y la regla / valor asignado al fabricante para todos sus productos nuevos o usados. Necesito este único dígito por producto para mostrarlo condicionalmente en una lista.

Lo siguiente no funciona, pero tendrás la idea de lo que estoy tratando de hacer. He intentado esto con declaraciones CASE y la siguiente declaración INCORRECTA IF / ELSEIF.

e agradecería cualquier ayuda para depurar esto y señalarme en la dirección correcta.

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

Aquí hay una versión CASE que realmente parece ejecutarse pero siempre da como resultado el primer valor sin importar lo que sea cierto (en este caso 1). No estoy seguro de poder agregar otra prueba con el AND en cada instrucción WHEN, pero no da un error, solo el resultado incorrecto.

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta