如何把对四个表查询的四条变成一个嵌套查询语句

tomcat 2007-11-13 10:58:05
代码如下:
请高人帮忙
谢谢了~

<%
String serial_no=request.getParameter("serial_no");
//String count=request.getParameter("count");
//int countno=Integer.parseInt(count);

Connection conn=null;
Statement sql=null;
ResultSet rs1=null;
ResultSet rs2=null;
ResultSet rs3=null;
ResultSet rs4=null;

try
{//加載數據庫驅動
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException e)
{
out.print("数据库驱动加载失败");
}
//try
//{//數據庫鏈接
conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.132.25:1521:acsgit01","sitedbt","git9280#");
sql=conn.createStatement();
//定義查詢條件
//查询表rm_item_detail
String condition1="select serial_no,apply_no,line_no,rma_no,rma_center from rm_item_detail where serial_no="+serial_no;
rs1=sql.executeQuery(condition1);

//查询表rm_header
String condition2="select RMA_TYPE from rm_header where RMA_NO="+rs1.getString("rma_no");
rs2=sql.executeQuery(condition2);

//查询表rm_site_master
String condition3="select name from rm_site_master where rma_center="+rs1.getString("rma_center");
rs3=sql.executeQuery(condition3);

//查询表rm_item_extrainfo
String condition4="select KEYIN_DATE,CLOSED_DATE,(CLOSED_DATE-KEYIN_DATE) TAT from rm_item_extrainfo where line_no="+rs1.getString("line_no")+" and apply_no="+rs1.getString("apply_no");
rs4=sql.executeQuery(condition4);
out.print("<table border>");
out.print("<tr>");
out.print("<th width=50>"+"serial_no");
out.print("<th width=50>"+"RMA_no");
out.print("<th width=50>"+"RMA_TYPE");
out.print("<th width=50>"+"RMA_CENTER");
out.print("<th width=50>"+"KEYIN_DATE");
out.print("<th width=50>"+"CLOSED_DATE");
out.print("<th width=50>"+"TAT");
out.print("</tr>");
while(rs1.next())
{
out.print("<tr>");
out.print("<td width=50>"+rs1.getString(1)+"</td>");
out.print("<td width=50>"+rs1.getString(2)+"</td>");
out.print("<td width=50>"+rs2.getString(1)+"</td>");
out.print("<td width=50>"+rs3.getString(1)+"</td>");
out.print("<td width=50>"+rs4.getString(1)+"</td>");
out.print("<td width=50>"+rs4.getString(2)+"</td>");
out.print("<td width=50>"+rs4.getString(3)+"</td>");
out.print("</tr>");
}
out.print("</table>");
//int lowrow=rs.getRow();
//out.print(""+lowrow+"");
//out.print("Database Connection!");
//out.print(table);
//}
//catch(SQLException e)
//{
out.print("Database Disconnection");
//}
%>
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomcat 2007-11-17
  • 打赏
  • 举报
回复
感谢HelloWord_001大哥
问题已经解决
zll711 2007-11-14
  • 打赏
  • 举报
回复
关联其实不复杂的,就是select * from A,B,C where a.* = B.* and A.* =C.* 之类的,
关键是看不清你这几个表之间的关系
HelloWorld_001 2007-11-14
  • 打赏
  • 举报
回复
4表直接关联就可以了
关联条件就是你的条件,不用修改的
tomcat 2007-11-14
  • 打赏
  • 举报
回复
不会使用关联,汗。。。。。
能否帮提供源码
Thanks
HelloWorld_001 2007-11-14
  • 打赏
  • 举报
回复
楼上没细看,差不多!
就是把你rs2,rs3,rs4中的 类似rs1.getString( "rma_no "); 换成 rma_no 就好了。
select 你需要的字段
from 你的4张表,每个取个别名,例如分别是a,b,c,d
where 你原来的where条件 ,字段前面加别名,按照我上面说的替换就可以了
kaoziji 2007-11-14
  • 打赏
  • 举报
回复
    String condition1 = "SELECT rmid.serial_no, rmid.apply_no, rmh.RMA_TYPE, rmsm.name
, rmie.KEYIN_DATE, rmie.CLOSED_DATE, (rmie.CLOSED_DATE - rmie.KEYIN_DATE) TAT
FROM rm_item_detail rmid, rm_header rmh, rm_site_master rmsm, rm_item_extrainfo rmie
WHERE rmid.rma_no = rmh.rma_no AND rmsm.rma_center = rmid.rma_center
AND rmie.line_no = rmid.line_no AND rmie.apply_no = rmid.apply_no AND rmid.serial_no = " + serial_no;
rs1=sql.executeQuery(condition1);

......

while(rs1.next())
{
out.print( " <tr> ");
out.print( " <td width=50> "+rs1.getString(1)+ " </td> ");
out.print( " <td width=50> "+rs1.getString(2)+ " </td> ");
out.print( " <td width=50> "+rs1.getString(3)+ " </td> ");
out.print( " <td width=50> "+rs1.getString(4)+ " </td> ");
out.print( " <td width=50> "+rs1.getString(5)+ " </td> ");
out.print( " <td width=50> "+rs1.getString(6)+ " </td> ");
out.print( " <td width=50> "+rs1.getString(7)+ " </td> ");

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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