【发布时间】:2018-02-14 02:14:07
【问题描述】:
我正在尝试完成以下操作:显示 Mgt.Dbo.Tab1 的所有行(157 行),同时加入 3 个表。该查询仅提供来自 Mgt 的 76 行的结果。我试过使用左连接无济于事。帮助! TIA
代码:
select
mgt.UID
, Mgt.emp_num
, emp.EMP_NAME
, RTRIM(mgt.COMPANY)
, 'Company 1'
, jnl.d_w
, mgt.d_r
, jnl.UNITS
, jnl.RATE
, mgt.hours
, mgt.RATE
, rtrim(jnl.MEMO)
, mgt.UNIQUE_ID
, jnl.grow
, jnl.grow_num
, hdr.ch_date
, mgt.sub_by
, hdr.ch_num
from Mgt.dbo.sick as mgt
inner join Comp1.DBO.emp as emp
on Mgt.emp_num = emp.emp_num
inner join Comp1.dbo.hdr as hdr
on Mgt.emp_num = hdr.emp_num
inner join Comp1.dbo.jnl as jnl
on jnl.c_n = hdr.c_n
where COMPANY in ('Test')
and jnl.wg = 'SP'
and mgt.d_r = jnl.d_w
and mgt.d_r >= '8/20/2017'
and mgt.d_r <= '9/1/2017'
and mgt.d_r=jnl.d_w
【问题讨论】:
-
我想买一些别名。
-
@SqlZim ;-) 名称已更改以保护无辜
-
不,不像 Dragnet。像表别名和源表的前缀列。 How to alias your tables - Aaron Bertrand。每列都应为其来源表的表别名作为前缀,这样我们就可以告诉您如何使用左连接以及将条件从您的
where移动到您的连接条件来修复您的查询。 -
哦,好的。我一直在阅读它。这对我来说是新的,所以我很抱歉。我相信它有助于提高可读性
-
将所有这些连接更改为左连接。如果这样做不行,请关注 where 子句。关键是,您的内部连接和 where 子句将限制您在此查询中的结果集。
标签: sql sql-server-2008 select join