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).Declaración de selección de MySQL con CASE o IF ELSEIF? No estoy seguro de cómo obtener el resultado
Estoy tratando de hacer una consulta que me diga dónde se puede ver el producto en función de la configuración en 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 pueden verse 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 exprés_nuevo o exposito_ del fabricante actual.
Lo que estoy tratando de obtener es los detalles del artículo y el valor calculado para ver si es nuevo o usado y la regla/valor asignado al fabricante para todos sus productos nuevos o usados. Necesito este dígito único por producto para mostrarlo condicionalmente en una lista.
Lo siguiente no funciona, pero obtendrá la idea de lo que estoy tratando de hacer. He intentado esto con las declaraciones CASE y la siguiente instrucción INCORRECTA IF/ELSEIF.
Cualquier ayuda para depurar esto y apuntarme en la dirección correcta sería apreciado.
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í es una versión de casos que en realidad parece a ejecutar, pero siempre resulta en el primer valor, no importa lo que pase a ser verdad (en este caso 1). No estoy seguro de que pueda agregar otra prueba con AND en cada instrucción WHEN, pero no da 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
[aquí] (http://a2znotes.blogspot.in/2012/12/control-flow-functions.html) es muy buena fuente de MySQL si no, declaración de caso. Todos se explican con ejemplos. –