我有两个桌子。一个拥有制造商信息,并包括他们可以销售的区域。另一个有他们的产品出售。我们必须根据地区来限制产品的可见性。这就像Netflix的系统中的视频只能在任何地方(1),在加拿大(2),在美国(3)都可以观看。
我正在尝试进行查询,以告诉我可以根据制造商表中的设置在哪里查看产品。
例如,在制造商表中,有两个字段称为Exposure_new和Exposure_used,每个字段的值为1,2或3,以限制可以看到其新视频或使用过的视频的位置。
添加视频后,不会为它们分配“曝光”值,这是根据当前制造商的Exposure_new或Exposure_used值在将它们添加到我们的索引中时即时进行的。
我要获取的是项目详细信息以及根据其是新产品还是二手产品以及可以将其所有新产品或二手产品分配给制造商的规则/值在哪里可以看到的计算值。 我需要根据每个产品使用此数字以有条件地将其显示在列表中。
以下内容不起作用,但是您将了解我正在尝试做的事情。我已经使用CASE语句和以下WRONG 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),总是会产生第一个值。我不确定我是否可以在每个WHEN语句中添加与AND的另一个测试,但是它不会给出错误,而只会给出错误的结果。
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