Oracle中多表联合查询。求如何对查询结果去重?

辰殇 2011-11-16 03:35:10
select NEW_YGINFO.YGID,NEW_DEPT.DEPTNAME,NEW_YGINFO.YGNAME,NEW_DEPTGW.DEPT_GW,NEW_YGINFO.YGSFZ,NEW_YGINFO.LOGINNAME,NEW_YGINFO.ROLE,NEW_YGINFO.PASSWORD,count(*) from new_yginfo inner join new_dept on new_yginfo.deptid = new_dept.id inner join new_deptgw on NEW_DEPTGW.DEPT_GWID = NEW_DEPT.ID


查询结果如下:

ygid deptname ygname dept_gw ygsfz loginname role password
88 技术装备科 神啊 副科长 133131231231 神啊 1111
88 技术装备科 神啊 科长 133131231231 神啊 1111
88 技术装备科 神啊 科员 133131231231 神啊 1111
281 技术装备科 掌握 副科长 掌握 0 1111
281 技术装备科 掌握 科长 掌握 0 1111
281 技术装备科 掌握 科员 掌握 0 1111
282 技术装备科 地方 副科长 地方 0 1111
282 技术装备科 地方 科长 地方 0 1111
282 技术装备科 地方 科员 地方 0 1111

...全文
5352 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
灵动代码~ 2012-03-07
  • 打赏
  • 举报
回复
怎么完善?请指教!

谢谢!
xunmengzhi 2011-11-17
  • 打赏
  • 举报
回复

select
NEW_YGINFO.YGID,
NEW_DEPT.DEPTNAME,
NEW_YGINFO.YGNAME,
NEW_DEPTGW.DEPT_GW,
NEW_YGINFO.YGSFZ,
NEW_YGINFO.LOGINNAME,
NEW_YGINFO.ROLE,
NEW_YGINFO.PASSWORD,
count(*)from new_yginfo , new_dept, NEW_DEPTGW
where new_depton new_yginfo.deptid = new_dept.id
and
new_deptgw on NEW_DEPTGW.DEPT_GWID = NEW_DEPT.ID


这样写就正确了~
铀钚氕氘氚 2011-11-17
  • 打赏
  • 举报
回复
select DISTINCT NEW_YGINFO.YGID,NEW_DEPT.DEPTNAME,NEW_YGINFO.YGNAME,NEW_DEPTGW.DEPT_GW,NEW_YGINFO.YGSFZ,NEW_YGINFO.LOGINNAME,NEW_YGINFO.ROLE,NEW_YGINFO.PASSWORD,count(*) from new_yginfo inner join new_dept on new_yginfo.deptid = new_dept.id inner join new_deptgw on NEW_DEPTGW.DEPT_GWID = NEW_DEPT.ID
我心飞翔 2011-11-16
  • 打赏
  • 举报
回复
在select后面第一个字段前加上distinct即可。
xiaobn_cn 2011-11-16
  • 打赏
  • 举报
回复

inner join new_deptgw
on NEW_DEPTGW.DEPT_GWID = NEW_DEPT.ID


这部分关联关系有问题,应当是在表new_deptgw中同一科室存在3条记录,分别是科长、副科长、科员,你只用id进行关联就导致结果集中的记录数变成3倍。去除这个关联或者完善这个关联都可以解决这个问题。
辰殇 2011-11-16
  • 打赏
  • 举报
回复
我是三个表联合查询。查询出来后的结果却重复三次。现在想知道怎么去重?
dawugui 2011-11-16
  • 打赏
  • 举报
回复
这样让人如何理解?

我给你个例,自己参考修改.

select a.* , t.* from a, b t
where a.id = t.id and t.val = (select max(val) from b where id = t.id)

select a.* , t.* from a, b t
where a.id = t.id and not exists (select 1 from b where id = t.id and val > t.val)
【完整Oracle SQL开发教程课件如下】 数据库开发 Oracle数据库 SQL开发教程 第0章 开篇概述(共14页).pdf 数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制数据和对数据排序(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第04章 单行函数(共61页).pdf 数据库开发 Oracle数据库 SQL开发教程 第05章 多表连接(共48页).pdf 数据库开发 Oracle数据库 SQL开发教程 第06章 分组函数(共41页).pdf 数据库开发 Oracle数据库 SQL开发教程 第07章 子查询(共49页).pdf 数据库开发 Oracle数据库 SQL开发教程 第08章 集合运算(共20页).pdf 数据库开发 Oracle数据库 SQL开发教程 第09章 高级子查询(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第10章 层次查询(共17页).pdf 数据库开发 Oracle数据库 SQL开发教程 第11章 数据操作与事务控制(共52页).pdf 数据库开发 Oracle数据库 SQL开发教程 第12章 Oracle数据库网络连接(共39页).pdf 数据库开发 Oracle数据库 SQL开发教程 第13章 创建和维护表(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第14章 约束(共33页).pdf 数据库开发 Oracle数据库 SQL开发教程 第15章 视图(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第16章 序列、索引、同义词(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf

17,140

社区成员

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

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