ASPでは、ユーザーが選択に基づいてページに表示されるデータをフィルタリングできるようにするいくつかのドロップダウンをセットアップしました。
これらのドロップダウンは、データ コレクション、Year 11 などの学年グループ、英語などの科目、教育グループ、およびサブグループ用です。
データ収集、年、科目はすべて選択する必要がありますが、教育グループとサブグループは未選択 (すべてを選択) のままにするか、個別に選択するか、両方を選択することができます。
サブグループの下に多くのオプションがあるため、SQL ストアド プロシージャの where 句が巨大になりました。以下は、サブグループが選択されていない場合、女の子のサブグループが選択されている場合、または男の子のサブグループが選択されている場合のいくつかのオプションです。これ以外にもたくさんありますが、簡潔にするために、投稿するものを制限しました。
私の質問は、このコードを何らかの方法で最適化できますか、それとも最も簡潔ですか? さらに例が必要な場合はお知らせください。投稿に追加します。
where
--All
(@TeachingGroup = 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND @Subgroup='Select All'
OR
@TeachingGroup <> 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND ([TeachingGroup] = @TeachingGroup) AND @Subgroup='Select All')
or
--Gender Girls
(@TeachingGroup = 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND Gender =
case when @Subgroup = 'GenF' then 'F' end)
OR
@TeachingGroup <> 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND ([TeachingGroup] = @TeachingGroup) AND Gender = case when @Subgroup = 'GenF' then 'F' end
or
--Gender boys
(@TeachingGroup = 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND Gender =
case when @Subgroup = 'GenM' then 'M' end)
OR
@TeachingGroup <> 'Select All' AND ([StuYear] = @StuYear) AND ([DataCollection] = @DataCollection) AND ([Name] = @SubjectName) AND ([TeachingGroup] = @TeachingGroup) AND Gender = case when @Subgroup = 'GenM' then 'M' end