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
我正在尝试弄清楚如何针对 "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