一个维数相关的问题

andy8lin 2007-04-20 01:34:33
现在有一个问题要请教一下高手。比如说我现在有下面这么一个模型,总的是五维的情况。分努力程度,个人兴趣,学校方法,英语基础还有通过情况。
学生Aijk , 个人努力程度c1,vijk1 R1
个人兴趣c2,vijk2 R2
Rijk = 学习方法c3,vijk3 = R3
英语基础c4,vijk4 R4
通过情况c5,vijk5 R5

其中,各维情况又分下面括号里面的情况。
V1(c1)={不努力,一般,很努力}
V2(c2)={没兴趣,一般,非常感兴趣}
V3(c3)={没效率,一般,非常有效率}
V4(c4)={差,中,良,优}
V5(c5)={通过,未通过}

所以,我设计的数据库的表是这样子的:
编号 个人努力程度 个人兴趣 学习方法 英语基础 通过情况
1 不努力 一般 一般 良 未通过
2 很努力 非常感兴趣 一般 良 通过
。。。。。。
下面的数据和上面的差不多。那我怎么统计里面的数据情况。
比如说我分一维的情况,就有3+3+3+4=13种
二维的就有:。。。
三维。。。。
四维就是:3×3×3×4=108种。。。
并且这些分维的情况都要从数据库里面读出统计的数量。
比如说我们找一维,个人努力程度是“不努力”的,那就查询表里面有多少个是个人努力程度是“不努力”,返回数量。
二维的话,我们找个人兴趣是“一般”,学习方法是“良”,那我们也上去查找得出数量。
。。。。。。
后面三维、四维的情况类似。。。但是,就是全部情况都要考虑,并且要分维数考虑的。

不知道有哪位高手能提供一下好的方法啊,跪谢了。
...全文
348 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
其他4个if判断也都要换成那样
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
纠正一下 上面程序里if((!s1.equals(""))||s1!=null)
应换成if(s1!=null && !s1.equals(""))
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
哈 谢谢楼主啦 可算到3个绿裤衩了 这1个星期多没白混 HOHO~
andy8lin 2007-04-20
  • 打赏
  • 举报
回复
哦。。。。差不多这样的了。谢谢了。。。。
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
上面的程序只管判断对应的字段是否有查询条件 如果有就添加 因为sql.append(s1);这句是添加的变量 所以不管你前台传过来什么 都可以查询
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
你可能需要从外面传进来的变量进行查询 那这样下面5个String参数分别表明传进来的对应5个字段的5个查询条件
public int countResult(String s1,String s2,String s3,String s4,String s5){
......
......
StringBuffer sql = new StringBuffer("SELECT COUNT(*) FROM XXXXXX WHERE 1=1");
if((!s1.equals(""))||s1!=null){ //如果第一个查询条件不为空那就添加查询条件 下同
sql.append(" AND 个人努力程度='");
sql.append(s1);
sql.append("'");
}
if((!s2.equals(""))||s2!=null){
sql.append(" AND 个人兴趣='");
sql.append(s2);
sql.append("'");
}
if((!s3.equals(""))||s3!=null){
sql.append(" AND 学习方法='");
sql.append(s3);
sql.append("'");
}
if((!s4.equals(""))||s4!=null){
sql.append(" AND 英语基础='");
sql.append(s4);
sql.append("'");
}
if((!s5.equals(""))||s5!=null){
sql.append(" AND 通过情况='");
sql.append(s5);
sql.append("'");
}
String search = sql.toString();
......
......
}
andy8lin 2007-04-20
  • 打赏
  • 举报
回复
但是这样没有办法囊括全部情况啊。
比如吧,条件1 分:A1,B1,C1三种情况。
条件2 分:A2,B2,C2三种
条件3 分:A3,B3,C3三种
条件4 分:A4,B4,C4,D4四种。
如果是一维的情况呢,就是从条件1到条件4中随便找一个出来,比如我们找条件2,那么条件2又分A2,B2,C2,所以我们必须考虑这三种情况。如果我们找条件4查询,就要分A4,B4,C4,D4四种了。

如果我们去二维的话呢,就是从里面找两个条件出来。如果我们选择的是条件1和条件2,那么组合的情况就有:A1和A2,A1和B2,A1和C2,B1和A2,B1和B2,B1和C2,C1和A2,C1和B2,C1和C2这么多情况的了。。。

三维的话就更多,然后到四维。。。就是要这么把全部的情况都找出来的哦
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
StringBuffer sql = new StringBuffer("SELECT * FROM XXXXXX WHERE 1=1");
if(条件1成立){
sql.append(" AND 条件1的查询条件");
}
if(条件2成立){
sql.append(" AND 条件2的查询条件");
}
if(条件3成立){
sql.append(" AND 条件3的查询条件");
}
if(条件4成立){
sql.append(" AND 条件4的查询条件");
}
if(条件5成立){
sql.append(" AND 条件5的查询条件");
}
String search = sql.toString();
search 就是最后组合成的SQL语句 差不多吧
andy8lin 2007-04-20
  • 打赏
  • 举报
回复
好的,谢谢了。。。。我统计出来的好像是一维有13种情况,二维有63种,三维有135种,四维108种。。。。总的是319。好多啊。。。先去吃饭,麻烦兄弟们了。
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
我知道楼主你的意思了 等等 我给你写一个
andy8lin 2007-04-20
  • 打赏
  • 举报
回复
比如说个人努力程度吧,我分V1(c1)={不努力,一般,很努力}三种情况,那我就要找出
select conut(*) from ***** where 个人努力程度 = '不努力'
select conut(*) from ***** where 个人努力程度 = '一般'
select conut(*) from ***** where 个人努力程度 = '很努力'
这样三种情况。这样是一维的情况。
如果说二维的话,那我就要添多一个条件的了。比如添多个人兴趣吧
有V2(c2)={没兴趣,一般,非常感兴趣},那么分的情况就有:
select conut(*) from ***** where 个人努力程度 = '不努力' and 个人兴趣 = '没兴趣'
select conut(*) from ***** where 个人努力程度 = '不努力' and 个人兴趣 = '一般'
select conut(*) from ***** where 个人努力程度 = '不努力' and 个人兴趣 = '非常感兴趣'。。。。。。

下面的情况就类似这样的啊。。。也算是组合问题吧。。。

andy8lin 2007-04-20
  • 打赏
  • 举报
回复
呵呵。。。。楼上说的差不多。。。但是这种是5维的情况。。。我需要分的是一维、二维、三、四维的啊。。。。然后每个条件下面还有分的啊,这个才麻烦啊
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
不会是这样吧
SELECT * FROM XXXXX WHERE 条件1 AND 条件2 AND 条件3 AND 条件4 AND 条件5 有几个条件 你就AND几个呗 如果只统计数量那就把*换成COUNT(*)就行了
WIN_ANGEL 2007-04-20
  • 打赏
  • 举报
回复
楼主的描述好复杂啊 能不能简单说一下你到底想做什么啊?被你弄晕了
andy8lin 2007-04-20
  • 打赏
  • 举报
回复
其实就是找出上面所说的V1~V4的之间的组合问题啦。
imA 2007-04-20
  • 打赏
  • 举报
回复
没明白你要干什么。


帮你顶吧

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧