去掉重复行的问题?

weixiangerdou 2008-09-17 08:22:07
就两张的查询,两张的关系是一对多的关系,这张表adrReport对应这一张表adrMedDetail是一对多的关系,现在我将所写的方法及查询的语句给大家看看:
public ActionForward selectHitInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
AdrReportForm adrReportForm = (AdrReportForm) form;
DetachedCriteria dc = DetachedCriteria.forClass(AdrReport.class);
Connection conn = DBConnect.getDBConnect(); //调用jdbc连接的方法
String result = request.getParameter("result");

String sql = "select a.*,b.CurrentName, b.MedicationName, b.dosage from "
+ "adrReport a, adrMedDetail b where "
+ "a.id = b.reportid and result like '%"+result+"%' "; // 取出表中的相关数据
PreparedStatement psm = conn.prepareStatement(sql);

ResultSet rs = psm.executeQuery();
List list = new ArrayList();
while(rs.next()) {
HitDrugStat hit = new HitDrugStat();
hit.setOrgName(rs.getString("orgname"));
hit.setDegree(rs.getString("degree"));
hit.setAdrName(rs.getString("adrname"));
hit.setResult(rs.getString("result"));
hit.setHappenDate(rs.getDate("happenDate"));
hit.setSufferName(rs.getString("sufferName"));
hit.setSignOfReporter(rs.getString("signOfReporter"));
list.add(hit);

}
request.setAttribute("listone", list);

return mapping.findForward("hitdrugStat");
}

因为是这一个条件 a.id = b.reportid , reportid是可以重复的,所以它查出来有重复的记录,它所代表的意思就是可以有多个药品(的reportid),而adrReport表中有一个不良反应名称的字段adrName,(比如:发烧、头痛),所以,可能是由多个药品所引起的不良反应症状(比如说:有可能是白加黑、感康等药品)。
现在所要解决的问题就是:以上的SQL语句查出来的有重复的记录,怎么去掉重复的行?这个问题应该如何解决?先谢谢各位朋友了,帮帮忙!
...全文
320 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mydeman 2008-09-17
  • 打赏
  • 举报
回复
先给你参考例子,看这个是否有用:
http://topic.csdn.net/u/20080521/15/738f073d-096f-4232-aaa8-900d67bca75e.html
mydeman 2008-09-17
  • 打赏
  • 举报
回复
看你的问题有些迷惑,先问两个问题:
1、两表对应关系一多对,哪一个是1,哪一个是多?两表的主键和外键分别是什么?
2、重复记录是在哪个表内的哪些字段上重复?可否给出例子

最好给出一个例子,现在数据情况,需要达到什么结果?
chjx1982 2008-09-17
  • 打赏
  • 举报
回复
你的表可能有问题吧。你把它的结构贴出来看看。按这样应该是不会有总题的。
chjx1982 2008-09-17
  • 打赏
  • 举报
回复
String sql = "select a.*,b.CurrentName, b.MedicationName, b.dosage from "
+ "adrReport a, adrMedDetail b where "
+ "a.id = b.reportid and result like '%"+result+"%' ";
result是哪张表的字段。
weixiangerdou 2008-09-17
  • 打赏
  • 举报
回复
听说另外用迭代循环是可以做的,没有思路,具体还是不知道怎么来实现
weixiangerdou 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Dragon_sxw 的回复:]
distinct 一下不行吗?
[/Quote]

这样不行,有试过,还是有问题
weixiangerdou 2008-09-17
  • 打赏
  • 举报
回复
这张表adrReport(主表)的id是主键,所对应的外键reportid就是这张表adrMedDetail(药品的明细表)
笨沙发 2008-09-17
  • 打赏
  • 举报
回复
你这绝对用SQL可以写出,如果SQL都写不出就是你设计有问题
mengweilil 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Dragon_sxw 的回复:]
distinct 一下不行吗?
[/Quote]

是啊。。。。。。。

要么就都取出来,然后比较。不过量大的话可能有问题
weixiangerdou 2008-09-17
  • 打赏
  • 举报
回复
这么早,谢谢你们!在sql中过滤,好像还是有问题,听说用迭代循环是可以做的,说真的,我也想了半天,具体我还是不知道怎么去写!
按照思路,你们说呢,应该具体怎么来实现?
Dragon_sxw 2008-09-17
  • 打赏
  • 举报
回复
distinct 一下不行吗?
笨沙发 2008-09-17
  • 打赏
  • 举报
回复
先把你表说清楚,主键是什么,才能写SQL么
hanbb 2008-09-17
  • 打赏
  • 举报
回复
其实取出来比较也可以
kokobox 2008-09-17
  • 打赏
  • 举报
回复
建议你在sql中过滤重复记录

81,092

社区成员

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

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