这是一个令人尴尬的问题!但是我已经有一段时间没用过tsql了.
我有3张桌子:
主键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
Run Code Online (Sandbox Code Playgroud)
WorkUnit或中没有记录Gallery
如果我删除:
AND G.Active = 1
AND JWU.Active = 1
Run Code Online (Sandbox Code Playgroud)
我得到2条记录,所以我的Where条款覆盖了我的连接类型.这是公平的说法吗?
您应该将过滤移动到连接条件,其他方式只是过滤掉具有空值的行:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |