MySQL 带 CASE 的复杂 WHEN 过滤器

MySQL complex WHEN filter with CASE

我正在尝试弄清楚如何针对 "combination" 个案例过滤我的输出。我的前两个陈述很有效,让我得到了我想要的课程(即滑雪者能力水平的滑雪板课程 + 未评级的私人课程)。我的第三个陈述(inPreferredLessonType = 3,即滑雪板或滑雪板)未能正确过滤输出集——我将获得任何滑雪板课程或滑雪课程,其各种能力水平与滑雪者的两个(单独存储的)能力水平相匹配.想法不对,让用户感到困惑。

我想要的是只获得滑雪者滑雪板能力水平的滑雪板课程+滑雪者滑雪能力水平的滑雪课程+未评级的私人课程。请帮忙!

(...SELECT 语句的其余部分...)

CASE 
WHEN inPreferredLessonType = 1 
  THEN program.nBool_isSnowboard = 0 AND 
(program.n_ability_level = inSkiAbilityLevel OR program.n_ability_level = 0)

  WHEN inPreferredLessonType = 2
  THEN program.nBool_isSnowboard = 1 AND 
(program.n_ability_level = inSnowboardAbilityLevel OR program.n_ability_level = 0)

  WHEN inPreferredLessonType = 3
  THEN program.n_ability_level = inSkiAbilityLevel 
       OR program.n_ability_level = inSnowboardAbilityLevel
       OR program.n_ability_level = 0   
END

(...其余过滤语句、ORDER BY 等)

原来我只需要将条件括起来并过滤到滑雪与滑雪板的能力水平。

WHEN inPreferredLessonType = 3
      THEN (program.nBool_isSnowboard = 0 AND program.n_ability_level = inSkiAbilityLevel) 
            OR 
           (program.nBool_isSnowboard = 1 AND program.n_ability_level = inSnowboardAbilityLevel)
            OR 
            program.n_ability_level = 0