inner join 很奇怪的问题

yilin54 2014-05-27 11:01:20
有一表“型号名称表” 和一视图“累计统计01”,里面各有一条记录。


现在将两者如果型号规格、材质、单价三者同时相等时,用inner join连接起来查询。代码如下

SELECT 累计统计01.材质, 累计统计01.总重量, 累计统计01.总金额, 累计统计01.单价,
型号名称表.名称, 累计统计01.规格及型号
FROM 累计统计01 INNER JOIN 型号名称表
ON (累计统计01.单价 = 型号名称表.单价)
AND (累计统计01.材质 = 型号名称表.材质)
AND (累计统计01.规格及型号 = 型号名称表.规格型号);

结果:


这样的查询语句竟然结果为空。两者中型号规格、材质、单价,其实是有相等的啊(型号规格4Z40-150LB,材质CF8C,单价315.8),怎么连接查询结果为空啊?

后来我用left outer jion 又可以查询出来。代码如下

SELECT 累计统计01.材质, 累计统计01.总重量, 累计统计01.总金额,
累计统计01.单价, 型号名称表.名称, 累计统计01.规格及型号
FROM 累计统计01 LEFT JOIN 型号名称表 ON
(累计统计01.单价 = 型号名称表.单价)
AND (累计统计01.材质 = 型号名称表.材质)
AND (累计统计01.规格及型号 = 型号名称表.规格型号);

结果:
[img=https://img-bbs.csdn.net/upload/201405/27/1401202819_47605.jpg][/img

这样是有查询结果的。请问大家为什么那个inner join 查不到啊?
...全文
306 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
---涛声依旧--- 2014-06-04
  • 打赏
  • 举报
回复
引用 8 楼 yilin54 的回复:
[quote=引用 6 楼 rockyljt 的回复:] 楼主要弄清楚inner join 与left join 的区别 你这个left join on条件不满足时,都会显示表【累计统计01】里的记录的
老兄,是会显示【累计统计01】里的记录的,不过left查出的名称字段是另一个表里的,按理说应该是空值,怎么会有值呢?[/quote] 建议楼主看一下联机帮助,先弄清left join 的含义吧——ON的条件满不满足都会将左表记录全部显示出来
yilin54 2014-05-29
  • 打赏
  • 举报
回复
引用 9 楼 HEROWANG 的回复:
access很神奇
高手啊。看界面就知道是ACCESS
  • 打赏
  • 举报
回复
access很神奇
yilin54 2014-05-29
  • 打赏
  • 举报
回复
引用 6 楼 rockyljt 的回复:
楼主要弄清楚inner join 与left join 的区别 你这个left join on条件不满足时,都会显示表【累计统计01】里的记录的
老兄,是会显示【累计统计01】里的记录的,不过left查出的名称字段是另一个表里的,按理说应该是空值,怎么会有值呢?
yilin54 2014-05-29
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
若仍有问题,建议比对各个关联字段的数据类型是否一致?查看字符串后是否带有空格或其他不可见的字符?
问题查到了。一个单价是单精度,一个单价是双精度。不过left为什么可以查的出来呀? 应该查出来的的名称是空值才对啊?见鬼啦。。。
chen870201 2014-05-28
  • 打赏
  • 举报
回复
逐个条件排除看看
sdhp 2014-05-28
  • 打赏
  • 举报
回复
把表结构贴出来看看,看看能不能复现
唐诗三百首 2014-05-28
  • 打赏
  • 举报
回复
若仍有问题,建议比对各个关联字段的数据类型是否一致?查看字符串后是否带有空格或其他不可见的字符?
唐诗三百首 2014-05-28
  • 打赏
  • 举报
回复
try this,

SELECT 累计统计01.材质, 累计统计01.总重量, 累计统计01.总金额, 
累计统计01.单价, 型号名称表.名称, 累计统计01.规格及型号
FROM 累计统计01 
inner join 型号名称表 ON 
(累计统计01.单价 = 型号名称表.单价)
 AND (累计统计01.材质 = 型号名称表.材质) 
 AND (累计统计01.规格及型号 = 型号名称表.规格型号);
yilin54 2014-05-28
  • 打赏
  • 举报
回复
把问题顶一下
---涛声依旧--- 2014-05-28
  • 打赏
  • 举报
回复
楼主要弄清楚inner join 与left join 的区别 你这个left join on条件不满足时,都会显示表【累计统计01】里的记录的

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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