求助一SQL。。为什么我写的三表连接中会有重复数据?GROUP BY是不行的。。

莫欺少年穷 2012-03-16 12:36:40
表就不需要列出来了,我把我的SQL跟结果晒出来:


SELECT C.COMPANY_NAME,C.REPRESENTATIVE,C.REGISTERED_CAPITAL FROM COMPANY_T C
LEFT JOIN Managed_Service_Provider M ON C.COMPANY_ID=M.COMPANY_ID
LEFT JOIN TELCOM_CARRIER T ON M.CARRIER_ID=T.CARRIER_ID
WHERE M.CARRIER_ID='100079'



结果:
COMPANY_NAME REPRESENTATIVE REGISTERED_CAPITAL
1 山西晋通邮电实业有限公司 贺建兵 伍仟万元
2 山西晋通邮电实业有限公司 贺建兵 伍仟万元
3 山西晋通邮电实业有限公司 贺建兵 伍仟万元
4 山西光远技术有限公司 张晓军 贰仟万元
5 山西众至诚通信传输有限公司 刘占国 贰仟万元
6 太原市天地新通信有限公司 吕建民 贰佰万元

前三排明显数据重复的!!求解。。在线等!~先午休下去。。
...全文
256 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mailking 2012-03-16
  • 打赏
  • 举报
回复
COMPANY_T或者Managed_Service_Provider 存在重复数据
问题在于表没有主键或者主键由多个列组成
啊彪123 2012-03-16
  • 打赏
  • 举报
回复
直接distinct效率太低,还是找出那张表又重复吧!
xpingping 2012-03-16
  • 打赏
  • 举报
回复
没见着group by 语句啊……

这种直接distinct
sumury 2012-03-16
  • 打赏
  • 举报
回复
看样子COMPANY_T是主表,
Managed_Service_Provider和TELCOM_CARRIER分别是子表和孙表。
中间肯定是1:M的关系,
所以在Select出来的结果,就是多条了呗。

最简单,也是最不负责的做法是在select后面加distinct,

要么,仔细研究业务,写成正确的SQL。
莫欺少年穷 2012-03-16
  • 打赏
  • 举报
回复
谢谢大家了!!~
莫欺少年穷 2012-03-16
  • 打赏
  • 举报
回复
已解决重复问题,就是很不负责的加了distinct。。。


SQL功底还真拿不出来。。。改天恶补一下。。
cutebear2008 2012-03-16
  • 打赏
  • 举报
回复
你本身数据就有这样的重复,所以我觉得你在查询的时候应该添加条件过滤重复的记录。sql不严谨。
  • 打赏
  • 举报
回复
应该是表COMPANY_T有重复数据 LZ可以先查看下 已这表为主表连接 还能重复 应该是这问题吧 或者是条件不够严谨导致重复

17,377

社区成员

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

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