很奇怪的SQL问题:left join 会出现重复数据。

wslaowu 2010-04-30 02:00:27
原物料报检表tblsignin
原物料出入库表 tblStockMtrlmng

出入库表中共有五条数据 ,LEFT JOIN后,出现了重复数据。同样的语句别的产品都没有问题,单独产品140301026批号100416出现问题。很奇怪
语句如下:

SELECT a.fdCodeNo, ISNULL(a.fdpihao, 0) AS pihao, a.fdRealReceiveNum AS ruku,
a.fdRealWithDrawNum AS tuiku, a.fdFakeWithDrawNum AS Expr2
FROM tblStockMtrlmng a LEFT OUTER JOIN
tblsignin ON a.fdCodeNo = tblsignin.fdproid AND
a.fdpihao = tblsignin.fdstocknum
WHERE (a.fdCodeNo = '140301026') AND (a.fdpihao = 100416)

执行界面截图:


...全文
1917 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
哦,原来加 DISTINCT 就能解决了。谢谢各位了 谢谢Garnett_KG
Garnett_KG 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wslaowu 的回复:]

引用 10 楼 garnett_kg 的回复:
这里2笔数据,JOIN 起来之后就变成10条了啊。

2*5 =10

明白了吧。

谢谢您的解答, 我还真不知道 JOIN之后 就会以乘法来运算,再麻烦您看一下,这个语句怎么写才行呢。
就是让批次“100416”象批次“100409”一样。
[/Quote]


在JOIN之前,把那两笔变成一笔,就可以了,至于你要取哪一笔,就看你的需要了。

你对一下那两笔数据,是不是可以删掉其中以笔?
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
Garnett_KG 麻烦您再帮我看下。谢谢
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 garnett_kg 的回复:]
这里2笔数据,JOIN 起来之后就变成10条了啊。

2*5 =10

明白了吧。
[/Quote]
谢谢您的解答, 我还真不知道 JOIN之后 就会以乘法来运算,再麻烦您看一下,这个语句怎么写才行呢。
就是让批次“100416”象批次“100409”一样。
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
我们的表里 大部分数据都是正确的。只有3个产品有问题,这是其中一个。
所以我考虑 是不是语句 写的不严谨。
Garnett_KG 2010-04-30
  • 打赏
  • 举报
回复
这里2笔数据,JOIN 起来之后就变成10条了啊。

2*5 =10

明白了吧。
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
我个人原本是在公司维护硬件的,公司原来花钱做的系统没人维护,我就自己琢磨着学SQL

我也不太会用查询分析器,所以 也没法象别人提问题哪样 贴语句, 麻烦大家了
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
原数据 也就是这两个表了。


Garnett_KG 谢谢您的关注,执行结果是这个
幸运的意外 2010-04-30
  • 打赏
  • 举报
回复
那估计是元数据表的记录本身有重复了.
Garnett_KG 2010-04-30
  • 打赏
  • 举报
回复
SELECT * 
ROM tblsignin a
WHERE a.fdproid = '140301026'
AND a.fdstocknum=100416



贴一下这个结果
wslaowu 2010-04-30
  • 打赏
  • 举报
回复
oh天哪,贴重图片了。不好意思

重贴一下,跟它同样的产品,批号不同


wslaowu 2010-04-30
  • 打赏
  • 举报
回复
同样的产品,另一个批号就没有问题



wslaowu 2010-04-30
  • 打赏
  • 举报
回复
谢谢您的回复
1. tblsignin 表里记录也没有重复。
2. 目前连接是没有意义。 我是把问题简化了下来提问的,实际应用中报检表中有个“日期” 我想把它取出来
htl258_Tony 2010-04-30
  • 打赏
  • 举报
回复
你SELECT的全部是A表,为什么还是连接呢
风_雨_晴 2010-04-30
  • 打赏
  • 举报
回复
tblsignin表里有两条记录吧?
不过你这个连接查询没意义啊

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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