当前位置:  开发笔记 > 数据库 > 正文

为什么我的内部联接不起作用

如何解决《为什么我的内部联接不起作用》经验,为你挑选了1个好方法。

这是一个令人尴尬的问题!但是我已经有一段时间没用过tsql了.

我有3张桌子:

工作

画廊

JobWorkUnit

主键Gallery是链接到相应的外键Job.主键JobWorkUnit是链接到相应的外键Job

我希望返回所有记录,Job无论他们是否在其他2个表中都有"链接".

我曾经认为使用LEFT OUTER JOIN是这样做的方法,但我根本没有返回任何记录.

有人可以查看我的代码吗?

SELECT 
    *
FROM 
    Job J
LEFT OUTER JOIN 
    Gallery G ON G.JobRef = J.JobRef
LEFT OUTER JOIN 
    JobWorkUnit JWU ON J.JobRef = JWU.JobRef
WHERE 
    J.Active = 1 
    AND G.Active = 1 
    AND JWU.Active = 1 
    AND J.CompanyRef = @CompanyRef

WorkUnit或中没有记录Gallery

如果我删除:

AND G.Active = 1 
AND JWU.Active = 1 

我得到2条记录,所以我的Where条款覆盖了我的连接类型.这是公平的说法吗?



1> Giorgi Nakeu..:

您应该将过滤移动到连接条件,其他方式只是过滤掉具有空值的行:

SELECT  *
FROM    Job J
        LEFT OUTER JOIN Gallery G ON G.JobRef = J.JobRef
                                     AND G.Active = 1
        LEFT OUTER JOIN JobWorkUnit JWU ON J.JobRef = JWU.JobRef
                                           AND JWU.Active = 1
WHERE   J.Active = 1
        AND J.CompanyRef = @CompanyRef

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有