困扰了好久的问题,没想到好的解决算法,请教高手~~
有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,晚上回来结贴。
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,晚上回来结贴。
...全文
相关推荐
联想笔记本掉电闪屏问题解决
这个问题一直困扰了我好好久也没能解决,如今顺利的解决了,还是很开心的,也希望能帮忙同样有这个问题的朋友也能解决它.
CSS网页布局困扰新手的问题
本文将探讨一些新手在布局过程中常见的问题及其解决方案。首先,当遇到问题时,应立即进行代码检测。
困扰JSP的一些问题与解决方法
"本文探讨了JSP在Web开发中遇到的问题及其解决方案,主要关注JSP与Servlet、Template Engines的比较,并讨论了如何优化JSP的使用,包括引入JavaBeans以提高代码组织和
关于解决iReport4.1.1无法正常启动或者闪退或者JDK8不兼容的问题
在安装使用iReport的过程中遇到一个问题,我的iReport始终不能打开,困扰了我好久。接下来通过本文给大家介绍iReport4.1.1无法正常启动或者闪退或者JDK8不兼容的问题,需要的朋友可以
Intel英特尔AC3165无线网卡驱动.zip
解决Intel3165NGW网卡在win7系统、win10系统下蓝牙驱动不能用的问题。win7下蓝牙不能用的问题困扰了我很久,没想到是这个驱动的问题,特地分享出来给需要的朋友,资源已经设为固定积分,大


