现在有一个问题要请教一下高手。比如说我现在有下面这么一个模型,总的是五维的情况。分努力程度,个人兴趣,学校方法,英语基础还有通过情况。
学生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种
并且这些分维的情况都要从数据库里面读出统计的数量。
比如说我们找一维,个人努力程度是“不努力”的,那就查询表里面有多少个是个人努力程度是“不努力”,返回数量。
二维的话,我们找个人兴趣是“一般”,学习方法是“良”,那我们也上去查找得出数量。
后面三维、四维的情况类似但是,就是全部情况都要考虑,并且要分维数考虑的。不知道有哪位高手能提供一下好的方法啊,跪谢了。
学生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种
并且这些分维的情况都要从数据库里面读出统计的数量。
比如说我们找一维,个人努力程度是“不努力”的,那就查询表里面有多少个是个人努力程度是“不努力”,返回数量。
二维的话,我们找个人兴趣是“一般”,学习方法是“良”,那我们也上去查找得出数量。
后面三维、四维的情况类似但是,就是全部情况都要考虑,并且要分维数考虑的。不知道有哪位高手能提供一下好的方法啊,跪谢了。
SELECT * FROM XXXXX WHERE 条件1 AND 条件2 AND 条件3 AND 条件4 AND 条件5 有几个条件 你就AND几个呗 如果只统计数量那就把*换成COUNT(*)就行了
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 个人兴趣 = '非常感兴趣'下面的情况就类似这样的啊也算是组合问题吧
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语句 差不多吧
比如吧,条件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这么多情况的了三维的话就更多,然后到四维就是要这么把全部的情况都找出来的哦
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();
......
......
}
应换成if(s1!=null && !s1.equals(""))