MySQL复杂WHEN过滤器与CASE

时间:2015-10-15 04:48:45

标签: mysql case case-when

我试图弄清楚如何过滤我的输出"组合"案件。我的前两个陈述运作良好,并为我提供了我想要的课程(即滑雪者能力水平的滑雪课程和未经评估的私人课程)。我的第三个声明(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等)

1 个答案:

答案 0 :(得分:0)

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

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