我需要你帮助解决这个问题。我想根据某些条件获取choiceName。
以下是代码段
SELECT PSC.SKU_ID, PSC.Choice_ID, PSC.Option_ID, PO.*,
(
Case
WHEN PO.Std_id = 0
THEN
(SELECT *
FROM ProdOpt_choices
WHERE option_id = PSC.Option_ID
AND choice_id = PSC.Choice_ID)
WHEN PO.Std_id = 1
THEN
(SELECT *
FROM StdOpt_choices
WHERE option_id = PSC.Option_ID
AND choice_id = PSC.Choice_ID)
) AS Choicename
FROM Prod_SKU_Combos PSC
LEFT JOIN Product_Options PO ON PO.Option_ID = PSC.Option_ID
WHERE PSC.SKU_id = #SKU_ID#
任何帮助表示赞赏.. TIA
答案 0 :(得分:3)
如果您只需要一列(例如choicename
),并且连接数为1:(0-1),那么您可以对每个列使用left join
,并使用case
表达式:
select psc.sku_id, psc.Choice_id, psc.Option_id, po.*
, choicename = case
when po.Std_id = 0 then poc.ChoiceName
when po.Std_id = 1 then soc.ChoiceName
else soc.ChoiceName
end
from Prod_sku_Combos psc
left join Product_Options po
on po.Option_id = psc.Option_id
left join ProdOpt_choices poc
on poc.option_id = psc.Option_id
and poc.choice_id = psc.Choice_id
left join StdOpt_choices soc
on soc.option_id = psc.Option_id
and soc.choice_id = psc.Choice_id
where psc.sku_id = #sku_id#