注册 登录
编程论坛 SQL Server论坛

1 对多的关系时,如何让左连接与 右连接 内连接的查询结果都一致

yiyaozjk 发布于 2012-11-25 13:24, 936 次点击
只有本站会员才能查看附件,请 登录

同样是1 对多 的数据库关系
为什么我建的数据里,左连接与 右连接 内连接的查询结果确实都不一样。。。要怎么改才能让左连接与 右连接 内连接的查询结果都一致。。。。
例如:sjjtz    事件发展情况表。
      shijianb 事件名称表
str = "select distinct  a.bumen,a.xuhao,a.sjsm,b.gzrr,b.sjzt from sjjtz AS a INNER JOIN shijianb AS b ON a.xuhao=b.xuhao  where (b.sjzt<>'完成' or b.sjzt<> '完结') and a.xuhao='" & Trim(mrc1.Fields(2)) & "' and a.bumen='" & Trim(mrc1.Fields(0)) & "' and  a.zs='" & zs & "'"

   这是为何?

我用SQL 语句 去用友ERP软件中进行查询,它们的数据库 发现竟然左连接与 右连接 内连接的查询结果完全一致。
     (比如按物料表 与和入库单  关联字段是物料编号)同样是1 对多 ,即相同的物料可以在不同入库单里同时出现,甚至在同一张入库单里同时多次出现。但一个物料只能对应一个物料名称。。。。

    是在什么情况下才会使数据库,在让左连接与 右连接 内连接的查询结果都一致? 我把我的建的数据库上传上来了。。。
6 回复
#2
半杯清茶2012-11-26 09:15
内连接。(典型的连接运算,使用像   =   或   <>   之类的比较运算符)。包括相等连接和自然连接。     
      内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索   students   和   courses   表中学生标识号相同的所有行。   
   
      外连接。外连接可以是左向外连接、右向外连接或完整外部连接。     
      在FROM子句中指定外连接时,可以由下列几组关键字中的一组指定:   
      LEFT   JOIN   或   LEFT   OUTER   JOIN。     
      左向外连接的结果集包括LEFT  OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。   
      RIGHT  JOIN  或  RIGHT   OUTER   JOIN。     
      右向外连接是左向外连接的反向连接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。   
   
      FULL   JOIN   或   FULL   OUTER   JOIN。     
      完整外部连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   
   
      交叉连接。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。
#3
cnfarer2012-11-26 10:34
回复 楼主 yiyaozjk
当所有数据完整时,才可能有相同的结果:左表里的记录,右表中都必须有相应的记录;而右表里的记录,左表也必须有记录相对应.
#4
yiyaozjk2012-11-26 10:47
什么我建的数据里,左连接与 右连接 内连接的查询结果确实都不一样?要如何修改呢?
#5
半杯清茶2012-11-26 11:42
建议你先看一下什么是左连接,什么是右连接,什么是内连接 等等。。。
#6
cnfarer2012-11-27 07:11
回复 4楼 yiyaozjk
绝大数情况下,就应该是不一样的!!!
#7
yiyaozjk2012-12-03 20:00
我也是这样认为的,为什么用友ERP数据库左连接与右连接结果就会一样呢???不懂的就是在这里
1