这个问题都解决不了,领导就要我滚蛋!(100分!) 我sql不熟,如果仅仅显示付费编号和费用,可以考虑group by命令。但是要都列出来,就比较麻烦。能不能第一次select把付费编号选出来,存储起来(比如数组),然后循环做第二次select?这是最容易想到的办法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select distinct acct_i from dianhuafeiyong ;然后将结果保存到String id_str[];中。然后利用i循环执行{sum=0;//总费用初始为0执行这个查询语句"select * from dianhuafeiyong where acci_id="+id_str[i]+";";得到刚才得到的结果,逐个输出,并计算sum;out.println("总合是:"+sum+"元");} select distinct acct_i from dianhuafeiyong ; 然后将结果保存到String id_str[];中。 然后利用i循环执行 { out.println(" 付费编号 号码 费用"); sum=0;//总费用初始为0 执行这个查询语句"select * from dianhuafeiyong where acci_id="+id_str[i]+";"; 得到刚才得到的结果,逐个输出,并计算sum; out.println("总合是:"+sum+"元"); } 付费编号主表编号和费用子表TABLE 内最外围,循环付费编号作为 JavaBean 的传入参数由JavaBean 得到付费编号参数后,输出每一个付费编号下的所有记录到单元格当然,不用JavaBean也可以,不过就是纯JSP代码看上去比较不容易读 求得记录集:付费编号 号码 费用 12345566 5605741 20.0 12345566 5605791 25.0 12345566 5605711 20.0 22222222 5601234 20.0 22222222 5812839 25.0 11111111 5589234 10.0 11111111 5672939 2.0 在java程序里遍历这个记录集string num = "";int sum = 0;HashMap sumMap = new HashMap();for(...){ if(num!=0&&num!=xxx.getNum()){ sumMap.add(num,sum); sum = 0; num = xxx.getNum(); } sum += xxx.getCharge(); ...} SELECT DISTINCT 语句关键词 DISTINCT 用于返回唯一不同的值。SELECT 语句会从表的列中返回信息。但是假如我们仅仅希望获取唯一不同的元素呢?通过 SQL,我们所要做到所有事情就是向 SELECT 语句添加 DISTINCT 关键词:语法:SELECT DISTINCT 列名称 FROM 表名称可以用 SELECT DISTINCT 付费编号 FROM 表名称 得到没有重复编号的数据。排序,依次select 去sql区问问,用存储过程做啦,数据库计算速度应该是比较快的啦,不过要看你数据量有多大 这个是个很简单的问题!你用select 付费编号, sum(费用 ) group by 付费编号 它得到的是一个数组,可以这样List list=DAO.getfufei();List<Fufeibianhao>; newlist=new ArrayList<Fufeibianhao>();for(int i=0;i<list.size();i++){Object[] obj=(Object[])list.get(i);String 付费编号=(String)obj[0];int 费用=(int)obj[1];//然后把这两个值存到一个bean里。Dianhuafeiyong dhfy= new Dianhuafeiyong();dhfy.setFufeibianhao(付费编号);dhfy.setFeiyong(费用);//然后把这个bean保存到一个新的List里。newlist.add(dhfy);}//保存在requst或者session里,然后在前台取出newlist循环就可以了。以下是我的代码给你看看 List list1=hand.getMobile("YES", "", "", "", "", -1, "","", "", "","", "", "", "", "", "", "", "", "", "", ""); List<Handset> list2=new ArrayList<Handset>(); //List list=hand.getSETTEST() for(int i=0;i<list1.size();i++) { HandsetInfoDAO h=new HandsetInfoDAO(); Handset handset=new Handset(); Object ob[]=(Object[])list1.get(i); HandsetInfo handsetInfo=(HandsetInfo)h.findById((Integer) ob[0]); handset.setHandsetInfo(handsetInfo); handset.setMSale((Integer) ob[1]); handset.setMPrcie((Double) ob[2]); list2.add(handset); }楼主解决了记得给我通知下!如果不是很明白就给我发email:[email protected] 妈的真笨哦,我都没想到呢,所有的合计全部在页面上做不久好了吗? 哈哈哈哈哈哈哈你在页面上定义一个变量,把所有相同费用的编号的费用全部加起来就完事大吉了呀~~~list="select * from tablename"; //这个你会吧; 页面上<html><body><table><tr><td>编号</td><td>号码</td><td>费用</td></tr><% float j=0; for(int i;i<list.size();i++) { %> <tr><td>vo.ger编号()</td><td>vo.get号码()</td><td>vo.get费用()</td></tr><% String sss=""; sss=vo.get费用编号(); if(sss.equals(sss=vo.get费用编号())) { j=j+vo.get费用(); //注意要转类型; }else{ out.print("<tr><td colspan="3">"+j+"</td></tr>"); //第一个编号的计算已经完成了所以打印出来; j=0; //回收j; } } %></table></body></html>哈哈啊哈哈 分全缴,全缴...............不全给那边是太对不起我给你写了这么久................... sorry 改下 不然格式不对<html> <body> <table> <tr> <td>编号 </td> <td>号码 </td> <td>费用 </td> </tr> <% float j=0; String sss=""; for(int i;i <list.size();i++) { if(sss.equals(sss=vo.get费用编号())) { j=j+vo.get费用(); //注意要转类型; }else{ out.print(" <tr> <td colspan="3">"+j+" </td> </tr>"); //第一个编号的计算已经完成了所以打印出来; j=0; //回收j; } %> <tr> <td>vo.ger编号() </td> <td>vo.get号码() </td> <td>vo.get费用() </td> </tr> <% sss=vo.get费用编号(); } %> </table> </body> </html> soory 再改下 呵呵<html> <body> <table> <tr> <td>编号 </td> <td>号码 </td> <td>费用 </td> </tr> <% float j=0; String sss=""; for(int i;i <list.size();i++) { if(sss.equals(sss=vo.get费用编号())) { }else{ out.print(" <tr> <td colspan="3">"+j+" </td> </tr>"); //第一个编号的计算已经完成了所以打印出来; j=0; //回收j; } %> <tr> <td>vo.ger编号() </td> <td>vo.get号码() </td> <td>vo.get费用() </td> </tr> <% sss=vo.get费用编号(); j=j+vo.get费用(); //注意要转类型; } %> </table> </body> </html>这下对了 out.print(" <tr> <td colspan="3">"+j+" </td> </tr>"); //第一个编号的计算已经完成了所以打印出来; 就是合计的了 使用sql语句写程序能简化很多的。 他这个用一个sql还解决不了,又是全部查出来,记录多了影响性能。在页面上合计,这样做的话简介大方,自然明了 select id,sum(xj) from telephone group by id;这样可以将id,及每个id(付费编号)对应的和算出,然后再利用读出的id去读数据库,使用一个数组存放id,设置循环每读一个数组元素将它传给下面的变量应该就可以显示了。 select * from telephone where id=变量; 简单楼主搜一搜displaytag,自动合计,分页。http://chytmaths.blog.163.com/blog/static/29482972200792282546455/ 就像你的查询没有全部数据一样,你的不也是全部数据吗?我的查询不过是既包含了数据,又包含了数据汇总而已,而你是将汇总拿到了web服务器上计算而已,我的web服务器不用计算,只要展现一下数据就行。 他是考验你 哈哈 好好干 比你走可能是骗你的欢迎来我们的java世界ourjavasky 针对层次不同量身学习java技术http://www.ourjavasky.cn 这个 trim() 是个什么函数阿? SQL2K里好像没有这个哦。 我的JSP水平还不够,不过下次我会试验一下你的方法,还是感谢你,有分! webservice发布没问题 调用时axisfault:java.net.ConnectException: Connection refused: conn ssh框架,数据库设计遇到的问题 关于财务软件的账套制作问题!!! jsp与jquery 如何根据下拉列表的的值,从数据库取出对应的选项!!! 200分求一个AJAX传递参数乱码的问题,谢谢,急 Servlet 运行原理用什么来表达例子好理解一点? 关于<TEXTAREA ></TEXTAREA>控件问题 初学者的问题,大家给看看 求救。 fileupload上传中问题 弄不明白了
然后将结果保存到String id_str[];中。
然后利用i循环执行
{
sum=0;//总费用初始为0
执行这个查询语句"select * from dianhuafeiyong where acci_id="+id_str[i]+";";
得到刚才得到的结果,逐个输出,并计算sum;
out.println("总合是:"+sum+"元");
}
然后将结果保存到String id_str[];中。
然后利用i循环执行
{
out.println(" 付费编号 号码 费用");
sum=0;//总费用初始为0
执行这个查询语句"select * from dianhuafeiyong where acci_id="+id_str[i]+";";
得到刚才得到的结果,逐个输出,并计算sum;
out.println("总合是:"+sum+"元");
}
编号和费用子表
TABLE 内最外围,循环付费编号作为 JavaBean 的传入参数
由JavaBean 得到付费编号参数后,输出每一个付费编号下的所有记录到单元格
当然,不用JavaBean也可以,不过就是纯JSP代码看上去比较不容易读
付费编号 号码 费用
12345566 5605741 20.0
12345566 5605791 25.0
12345566 5605711 20.0 22222222 5601234 20.0
22222222 5812839 25.0 11111111 5589234 10.0
11111111 5672939 2.0 在java程序里遍历这个记录集
string num = "";
int sum = 0;
HashMap sumMap = new HashMap();
for(...){
if(num!=0&&num!=xxx.getNum()){
sumMap.add(num,sum);
sum = 0;
num = xxx.getNum();
}
sum += xxx.getCharge();
...
}
关键词 DISTINCT 用于返回唯一不同的值。SELECT 语句会从表的列中返回信息。但是假如我们仅仅希望获取唯一不同的元素呢?通过 SQL,我们所要做到所有事情就是向 SELECT 语句添加 DISTINCT 关键词:语法:
SELECT DISTINCT 列名称 FROM 表名称可以用 SELECT DISTINCT 付费编号 FROM 表名称 得到没有重复编号的数据。排序,依次select
你用select 付费编号, sum(费用 ) group by 付费编号
它得到的是一个数组,
可以这样
List list=DAO.getfufei();
List<Fufeibianhao>; newlist=new ArrayList<Fufeibianhao>();
for(int i=0;i<list.size();i++)
{
Object[] obj=(Object[])list.get(i);
String 付费编号=(String)obj[0];
int 费用=(int)obj[1];
//然后把这两个值存到一个bean里。
Dianhuafeiyong dhfy= new Dianhuafeiyong();
dhfy.setFufeibianhao(付费编号);
dhfy.setFeiyong(费用);
//然后把这个bean保存到一个新的List里。
newlist.add(dhfy);
}//保存在requst或者session里,然后在前台取出newlist循环就可以了。
以下是我的代码
给你看看
List list1=hand.getMobile("YES", "", "", "", "", -1, "","", "", "","", "", "", "", "", "", "", "", "", "", "");
List<Handset> list2=new ArrayList<Handset>();
//List list=hand.getSETTEST()
for(int i=0;i<list1.size();i++)
{
HandsetInfoDAO h=new HandsetInfoDAO();
Handset handset=new Handset();
Object ob[]=(Object[])list1.get(i);
HandsetInfo handsetInfo=(HandsetInfo)h.findById((Integer) ob[0]);
handset.setHandsetInfo(handsetInfo);
handset.setMSale((Integer) ob[1]);
handset.setMPrcie((Double) ob[2]);
list2.add(handset);
}楼主解决了记得给我通知下!如果不是很明白就给我发email:[email protected]
<html>
<body>
<table>
<tr>
<td>编号</td><td>号码</td><td>费用</td>
</tr>
<%
float j=0;
for(int i;i<list.size();i++)
{
%>
<tr><td>vo.ger编号()</td><td>vo.get号码()</td><td>vo.get费用()</td></tr>
<%
String sss="";
sss=vo.get费用编号();
if(sss.equals(sss=vo.get费用编号()))
{
j=j+vo.get费用(); //注意要转类型;
}else{
out.print("<tr><td colspan="3">"+j+"</td></tr>"); //第一个编号的计算已经完成了所以打印出来;
j=0; //回收j;
}
}
%>
</table>
</body>
</html>哈哈啊哈哈 分全缴,全缴...............
不全给那边是太对不起我给你写了这么久...................
<html>
<body>
<table>
<tr>
<td>编号 </td> <td>号码 </td> <td>费用 </td>
</tr>
<%
float j=0;
String sss="";
for(int i;i <list.size();i++)
{
if(sss.equals(sss=vo.get费用编号()))
{
j=j+vo.get费用(); //注意要转类型;
}else{
out.print(" <tr> <td colspan="3">"+j+" </td> </tr>"); //第一个编号的计算已经完成了所以打印出来;
j=0; //回收j;
} %>
<tr> <td>vo.ger编号() </td> <td>vo.get号码() </td> <td>vo.get费用() </td> </tr>
<%
sss=vo.get费用编号();
}
%>
</table>
</body>
</html>
<body>
<table>
<tr>
<td>编号 </td> <td>号码 </td> <td>费用 </td>
</tr>
<%
float j=0;
String sss="";
for(int i;i <list.size();i++)
{
if(sss.equals(sss=vo.get费用编号()))
{
}else{
out.print(" <tr> <td colspan="3">"+j+" </td> </tr>"); //第一个编号的计算已经完成了所以打印出来;
j=0; //回收j;
} %>
<tr> <td>vo.ger编号() </td> <td>vo.get号码() </td> <td>vo.get费用() </td> </tr>
<%
sss=vo.get费用编号();
j=j+vo.get费用(); //注意要转类型;
}
%>
</table>
</body>
</html>这下对了
select id,sum(xj) from telephone group by id;
这样可以将id,及每个id(付费编号)对应的和算出,然后再利用读出的id去读数据库,
使用一个数组存放id,设置循环每读一个数组元素将它传给下面的变量应该就可以显示了。
select * from telephone where id=变量;
楼主搜一搜displaytag,自动合计,分页。
http://chytmaths.blog.163.com/blog/static/29482972200792282546455/
好好干 比你走可能是骗你的
欢迎来
我们的java世界ourjavasky 针对层次不同量身学习java技术
http://www.ourjavasky.cn
这个 trim() 是个什么函数阿? SQL2K里好像没有这个哦。
我的JSP水平还不够,不过下次我会试验一下你的方法,还是感谢你,有分!