困扰了好久的问题,没想到好的解决算法,请教高手~~

弘毅致远 弘毅致远 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有5个条件 A,B,C,D,E
A,B之间有父子关系,
C,D之间有父子关系。
A,B,C,D,E展现给用户的是5个下拉列表,根据A选择项,加载B;根据C选择项加载D。
每个条件的第一项为所有。若在数据维护时,该选项是所有,查询要求根据子项可以查出按所有维护的基础数据。
例如:数据维护时选择的是
A5,A5-B3,C4,C4-D23,E50,
数据库保存的是对应的代码,假如是
id key A B C D E valid
1 S20100510-01 10 20 13 15 23 1

但维护时如果其中有一项或多项为所有,我想到的方法有两种:
方法1是,如果有项目维护为所有,就把维护为所有的项目进行笛卡尔积进行保存。
这种方法数据在更新时需要调整的数据比较多。
方法2是,如果有项目维护为所有,在保存时先检测是有子项已经维护,如果有进行覆盖。
所有项保存-1,以示标志。
对于上面的实例如果第二次维护时选择的是
所有,所有,C4,所有,E50
数据库保存的是
id key A B C D E valid
1 S20100510-01 10 20 13 15 23 0
2 S20100510-02 -1 -1 13 -1 23 1

现在根据具体项进行查询,直接匹配查询失败,需要放大条件。即把部分选项设为-1,去匹配。
这种试探方式,需要进行很多次。在sql进行判断放大,有很大的代码重复。

向高手请教,有没有好方法实现上面的逻辑~~~~

白天不能上CSDN,晚上回来结贴。
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
弘毅致远
MS-SQL Server 34,876 成员 254,635 内容